udp服务器

无连接的不可靠的服务用udp
1. 创建数据报套接字
2. 绑定本地IP和端口
3. 收发信息
recvfrom(BUFFERSIZE)
功能:在udp中接收消息
参数:buffersize表示一次最多可以接收到多少字节的消息
返回值:data接收到的消息,addr从哪个客户端接收到的消息
sendto(data,addr)
功能:向一个网络终端发送消息
参数:data要发送的消息(bytes),addr要发送对象的地址
4. 关闭套接字


udp客户端:
1. 创建数据报套接字
2. 消息收发
3. 关闭套接字

from socket import *
import sys

#从命令行传入IP和端口
HOST=sys.argv[1]
PORT=int(sys.argv[2])
ADDR=(HOST,PORT)


#创建数据报套接字
sockfd=socket(AF_INET,SOCK_DGRAM,)

#绑定本地IP和端口号
sockfd.bind(ADDR)

#接收消息
while True:
    data,addr=sockfd.recvfrom(BUFFERSIZE)
    print("recv from",addr,':',data.decode())
    sockfd.sendto(("在%s 接收到你到消息"%ctime()).encode(),addr)

#关闭套接字
sockfd.close()

总结:tcp与udp区别
1. tcp有连接,udp无连接
2. tcp 有三次握手和四次挥手,udp无
3. tcp上以数据流传输数据,有粘包,udp是数据报形式没有粘包
4. tcp的连接需要消耗一定的资源,相比之下,udp资源消耗少
5. tcp保证数据的可靠性,udp无保证
6. tcp需要listen,accept,connect ,udp不需要这些操作


socket模块
套接字属性
getpeername()
功能:用作服务器连接套接字,查看连接的客户端地址


循环服务器模型,循环处理客户端的请求,处理完一个继续处理下一个
缺点:不能同时处理多个请求,不允许某个客户端长期占用服务器资源,
因为udp不需要进行连接,所以循环服务器模型更加适合udp通信。
并发服务器模型
每有一个客户端就创建一个 进程/现成处理客户端的具体请求事情,而主进程/主线程 继续接收其他客户端的连接

fork
1. 创建套接字 绑定 监听
2. 接收客户端连接请求 创建新的进程
3. 主进程继续接收下一个客户端连接请求,子进程处理客户端事件
4. 有客户端则关闭相应的子进程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值