python基础—socket套接字(3),tcp和udp协议

前面的socket实例化,没有输入参数,采用的默认参数

socket_obj = socket.socket(socket_obj = socket.socket() 
#默认family=AF_INET, type=SOCK_STREAM)
1.SOCK_STREAM数据流,tcp协议,使用时候,客户端需要connect,服务端需要accept,建立链接生成新的对象,在对象内进行recv,
send收发消息。底层采用了Nagle算法,把短时间内多次数据量小的数据,合并成一个数据,然后封包,容易产生粘包问题,一次没接收干净的数据,会
在下次接收继续传过来;客户端断开会抛异常;正常情况下,不能收空
2.SOCK_DGRAM数据包,udp协议,使用recvfrom和sendto收发消息。每个包都又头。即使输入空,udp协议也会帮你封装上头;
没接收干净的数据会丢失。客户端断开不会抛异常;可收空
# 服务端
import socket

socket_obj = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket_obj.bind(('127.0.0.1', 8080))
data = socket_obj.recvfrom(1024)
print(data[0].decode('utf8'))
# 服务端
import socket

socket_obj = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
socket_obj.sendto('from udp'.encode('utf8'), ('127.0.0.1', 8080))

 

posted @ 2020-12-27 16:15  枫叶学python  阅读(138)  评论(0)    收藏  举报