UDP编程
服务器端代码如下:
import socket #导入socket包 server = socket.socket(type=socket.SOCK_DGRAM) #用socket方法来创建一个服务器socket对象 server.bind(("10.x.x.x",9000)) #监听本机"900x"端口,绑定成一个元组(本机地址,监听本机端口) while True: msg,addr=server.recvfrom(1024) #接收客户端发来的信息 msg=msg.decode("utf-8") #接收客户端发来的信息,并且编码 print("对方说:") print(msg) #对方的话 content = input("我说:") content=content.encode("utf-8") #对我的话进行编码 server.sendto(content, addr) #把服务器所说的话发送给对方,客户端发送信息 server.close() #关闭套接字
客户端代码如下:
import socket #导入socket包 client=socket.socket(type=socket.SOCK_DGRAM) #用socket方法来创建一个客户端socket对象 ip_port=('10.x.x.x',9000) #服务器地址和端口 while True: content = input("我说:") #我说的话写在这里 content = content.encode("utf-8") #由于不能直接传递字符串,所以需要将字符串编码 client.sendto(content, ip_port) # 向服务器发送一条信息 msg, addr = client.recvfrom(1024) # 接收从服务器返回的一条信息 msg = msg.decode("utf-8") #对信息进行解码 print("对方说:") print(msg) # 输出对方说的话 client.close()
套接字参数详解:
socket.socket(family=AF_INET,type=SOCK_STREAM)
family
地址系列应为AF_INET(默认值),AF_INET6,AF_UNIX,AF_CAN或AF_RDS。
(AF_UNIX 域实际上是使用本地 socket 文件来通信)type
套接字类型应为SOCK_STREAM(默认值),SOCK_DGRAM,SOCK_RAW或其他SOCK_常量之一。
SOCK_STREAM 是基于TCP的,有保障的(即能保证数据正确传送到对方)面向连接的SOCKET,多用于资料传送。
SOCK_DGRAM 是基于UDP的,无保障的面向消息的socket,多用于在网络上发广播信息。