博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python之路----TCP与UDP
阅读量:6903 次
发布时间:2019-06-27

本文共 3044 字,大约阅读时间需要 10 分钟。

TCP

import socket#tcp协议sk = socket.socket()     # 买手机 创建一个socket对象sk.bind(('127.0.0.1',8080))  # 给server端绑定一个ip和端口sk.listen()              # py3.4while True:    conn,addr = sk.accept()  # 获取到一个客户端的连接, 已经完成了三次握手建立了一个连接                             # 阻塞    while True:        msg = conn.recv(1024).decode('utf-8')    # 阻塞,直到收到一个客户端发来的消息        print(msg)        if msg == 'bye':break        info = input('>>>')        if info == 'bye':            conn.send(b'bye')            break        conn.send(info.encode('utf-8'))     # 发消息    conn.close()             # 关闭连接sk.close()               # 关闭socket对象,如果不关闭,还能继续接收# server client1 建立了长连接# client2
server
import socketsk = socket.socket()sk.connect(('127.0.0.1',8080))while True:    msg = input('>>>')    if msg == 'bye':        sk.send(b'bye')        break    sk.send(msg.encode('utf-8'))    ret = sk.recv(1024).decode('utf-8')    if ret == 'bye':break    print(ret)sk.close()
client
import socketsk = socket.socket()sk.connect(('127.0.0.1',8080))while True:    msg = input('client2:>>>')    if msg == 'bye':        sk.send(b'bye')        break    sk.send(('client2 :'+msg).encode('utf-8'))    ret = sk.recv(1024).decode('utf-8')    if ret == 'bye':break    print(ret)sk.close()
client2

UDP

import socketsk = socket.socket(type=socket.SOCK_DGRAM)  #DGRAM datagramsk.bind(('127.0.0.1',8080))       #只有服务端有的msg,addr = sk.recvfrom(1024)print(msg.decode('utf-8'))sk.sendto(b'bye',addr)sk.close()
server
import socketsk = socket.socket(type=socket.SOCK_DGRAM)ip_port = ('127.0.0.1',8080)sk.sendto(b'hello',ip_port)ret,addr = sk.recvfrom(1024)print(ret.decode('utf-8'))sk.close()
client

UDP协议实现qq聊天

import socketsk = socket.socket(type=socket.SOCK_DGRAM)sk.bind(('127.0.0.1',8080))while True:    msg,addr = sk.recvfrom(1024)    print(addr)    print(msg.decode('utf-8'))    info = input('>>>').encode('utf-8')    sk.sendto(info,addr)sk.close()
server
import socketsk = socket.socket(type=socket.SOCK_DGRAM)ip_port = ('127.0.0.1',8080)while True:    info = input('tiger :')    info = ('\033[34m来自tiger的消息 :%s\033[0m'%info).encode('utf-8')    sk.sendto(info,ip_port)    msg,addr = sk.recvfrom(1024)    print(msg.decode('utf-8'))sk.close()
client1
import socketsk = socket.socket(type=socket.SOCK_DGRAM)ip_port = ('127.0.0.1',8080)while True:    info = input('二哥 :')    info = ('\033[32m来自二哥的消息 :%s\033[0m'%info).encode('utf-8')    sk.sendto(info,ip_port)    msg,addr = sk.recvfrom(1024)    print(msg.decode('utf-8'))sk.close()
client2

UDP实现系统时间同步

# 提供服务

# 接收信息 时间的格式
# 将我的时间转换成 接受到的格式
# 发回给客户端

import timeimport socketsk = socket.socket(type=socket.SOCK_DGRAM)sk.bind(('127.0.0.1',8090))while True:    strf,addr = sk.recvfrom(1024)    strf = strf.decode('utf-8')    res = time.strftime(strf).encode('utf-8')    sk.sendto(res,addr)sk.close()
server
import socketsk = socket.socket(type=socket.SOCK_DGRAM)addr = ('127.0.0.1',8090)info = input('>>>').encode('utf-8')sk.sendto(info,addr)ret,addr = sk.recvfrom(1024)print(ret.decode('utf-8'))sk.close()
client

 

转载于:https://www.cnblogs.com/TheLand/p/8360093.html

你可能感兴趣的文章
keepalived 中使用的命令
查看>>
201621123085 《Java程序设计》第1周学习总结
查看>>
Git的学习笔记(二)
查看>>
不会再爱
查看>>
ubuntu下安装mysql
查看>>
在jmeter测试mysql中如何一次运行多条sql语句
查看>>
RPC框架性能基本比较测试
查看>>
git安装
查看>>
SEO黑页以及门页框架和JS跳转实现方法
查看>>
html5 Ajax 访问.net WebApi获取视频流
查看>>
[HNOI2008]玩具装箱TOY
查看>>
luogu P1801 黑匣子_NOI导刊2010提高(06)
查看>>
Java jdk环境变量配置
查看>>
Given Name.Family Name的区别
查看>>
读取Mysql的一种的方式
查看>>
信息安全--仿射密码
查看>>
深入浅出javascript(二)函数和this对象
查看>>
Form 对象
查看>>
Codeforces Round #533(Div. 2) C.Ayoub and Lost Array
查看>>
HDU - 3966-Aragorn' Story(树链剖分+线段树)
查看>>