基于UDP套接字的服务端
1.创建数据报套接字
sockfd = socket(AF_INET, SOCK_DGRAM)
2.绑定地址
sockfd.bind(addr)
3.消息的收发
data,addr = sockfd.recvfrom(buffersize)
功能:接收UDP消息
参数:每次最多接收多大的消息
返回值:data 接收到的数据
addr 消息发送端的地址
一次接收一个数据报,如果数据报大小大于buffersize则会丢失部分消息
sockfd.sendto(data,addr)
功能:发送UDP消息
参数:data 发送的消息 bytes格式
addr 目标地址
返回值:发送的字节数
4.关闭套接字
sockfd.close()
源码:
from socket import *
#创建数据报套接字
sockfd = socket(AF_INET,SOCK_DGRAM)
#绑定服务端地址
server_addr = ('0.0.0.0',8888)
sockfd.bind(server_addr)
#消息收发
while True:
data,addr = sockfd.recvfrom(1024)
print('从%s收到%s'%addr,data.decode())
sockfd.sendto('收到你的消息'.encode(),addr)
sockfd.close()
UDP客户端
1.创建套接字
socket(AF_INET,SOCK_DGRAM)
2.消息收发
recvfrom/sendto
3.关闭套接字
sockfd.close()
源码:
from socket import *
import sys
HOST = sys.argv[1]
PORT = int(sys.argv[2])
ADDR = (HOST,PORT)
#创建套接字
sockfd = socket(AF_INET,SOCK_DGRAM)
#消息收发
while True:
data = input('消息:')
sockfd.sendto(data.encode(),ADDR)
data,addr = sockfd.recvfrom(1024)
print('接收到:',data.decode())
sockfd.close()
发表评论