UDP 服务器不是面向连接的,所以不用像 TCP 服务器那样做那么多设置工作。事实上,并不用设置什么东西,直接等待进来的连接就好了.
上一讲: Python网络编程01-----基于TCP的Python简易服务器
ss = socket() # 创建一个服务器套接字
ss.bind() # 绑定服务器套接字
inf_loop: # 服务器无限循环
cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)
ss.close() # 关闭服务器套接字
UDP协议
服务器端
from socket import *
from time import ctime
UdpSock=socket(AF_INET,SOCK_DGRAM) #参数SOCK_DGRAM对应的是UDP协议
name=gethostname()
port=12348
UdpSock.bind((name,port))
while True:
print("等待接入")
data,addr=UdpSock.recvfrom(1024) #与TCP的区别。因为不需要事先建立链接,因此需要获取客户端的地址,并随时按照地址发送消息
print(str(addr)+"已接入")
data=(data.decode("UTF-8")+ctime()).encode("UTF-8")
UdpSock.sendto(data,addr) #向客户端发送消息
UdpSock.close()
客户端
#coding=UTF-8
from socket import *
import sys
reload (sys)
sys.setdefaultencoding('utf8')
host="192.168.1.66"
port=12348
UdpSock=socket(AF_INET,SOCK_DGRAM)
while True:
data=raw_input("快打字:")
if not data:
break
UdpSock.sendto(data,(host,port)) #无需connect,直接通过主机ip和端口访问主机
data,addr=UdpSock.recvfrom(1024)
print(data.decode("UTF-8"))
UdpSock.close()
上一讲: Python网络编程01-----基于TCP的Python简易服务器
下一讲:Python网络编程03----Python3.*中socketserver
如果有什么疑问欢迎到我的微信公众号提问~