python--(socket与粘包解决方案)
一.socket:
Socket 是任何一种计算机网络通讯中最基础的内容。例如当你在浏览器地址栏中输入 http://www.cnblogs.com/ 时,你会打开一个套接字,然后连接到 http://www.cnblogs.com/ 并读取响应的页面然后然后显示出来。而其他一些聊天客户端如 gtalk 和 skype 也是类似。任何网络通讯都是通过 Socket 来完成的
打开 => 读写 => 关闭
socket ftp传输:
importsocket
server= socket.socket() #创建一个手机#创建了一个socket对象
ip_port = ('192.168.15.113',8001) #创建了一张电话卡
server.bind(ip_port) #插上电话卡#绑定IP地址和端口
server.listen()#开机#监听IP地址和端口
conn, addr = server.accept() #等着别人给我打电话,阻塞住#等待客链接
from_client_msg = conn.recv(1024) #接收消息#1024为消息大小,单位B,MB = 1024KB,1KB = 1024B
from_client_msg = from_client_msg.decode('utf-8')#接收的消息是bytes类型,需要转换为字符串
print(from_client_msg)
conn.send('死鬼,十点'.encode('utf-8')) #发送消息
conn.close()#关闭链接
server.close()
socket ftp传输,服务端
importsocket
client=socket.socket()
server_ip_port= ('192.168.15.113',8001)
client.connect(server_ip_port)#链接服务端
client.send('约吗'.encode('utf-8')) #发消息#send里面的消息必须是字节类型的
from_server_msg= client.recv(1024) #阻塞住,等待接收消息
from_server_msg = from_server_msg.decode('utf-8')print(from_server_msg)
client.close()
socket ftp传输,客户端
socket udp传输:
importsocket
udp_server= socket.socket(type=socket.SOCK_DGRAM) #创建一个udp协议下的socket,需要使用参数type#DGRAM : datagram 数据报
ip_port = ('192.168.15.113',8001)#拿到一个地址,启动程序的时候,告诉电脑,你给我这个程序分配8001端口.
udp_server.bind(ip_port) #绑定IP地址和端口
from_client_msg,client_addr= udp_server.recvfrom(1024)#阻塞住了,接收客户端消息#from_client_msg来自客户端的消息,client_addr客户端的地址('192.168.15.113', 8001)
udp_server.sendto(b'gunduzi',client_addr)#发送消息
udp_server.close()#关闭udp的socket对象
socket udp传输,服务端
importsocket
udp_client= socket.socket(type=socket.SOCK_DGRAM)
server_ip_port= ('192.168.15.11