TCP连接套接字也称为流套接字。主要提供序列化的、可靠的、不重复的数据,它可以将消息拆分成多个片段,确保每一条片段都顺利到达目的地,然后按照顺序组合在一起,最后将完整的消息传递给正在等待的应用程序。
UDP是一个无连接的套接字又称为数据报类型的套接字。在传输过程中无法保证其顺序性、可靠性、重复性,事实上所发送的报文有可能最后并没有到达,也有可能存在重复的消息。
客户端:因特定请求而联系服务器,接收服务并处理相关事务的一方。客户端可以持续向服务器发送请求,也可以在结束事务请求后不再发出请求。
TCP客户端:
socket.AF_INET #internet通信
伪代码:
1.socket 创建套接字
2.connect 与服务器建立连接
3.send/recv 发送和接收数据
4.close 关闭套接字
from socket import *
客户端
创建套接字
tcp_socket = socket(AF_INET,SOCK_STREAM) #AF_INETinternet通信#SOCK_STREAM 流式套接字,用在tcp协议中
bind绑定ip/端口
dest_ip = input(‘请输入ip:\n’)
dest_port = input(‘请输入端口:\n’)
data = input(‘请输入数据:\n’)
与服务器建立连接connect
tcp_socket.connect((dest_ip,dest_port))
发送数据/接收数据1024
tcp_socket.send(data.encode(‘utf-8’)) #encode是将str(字符串)类型转换成bytes(二进制)类型
recv_socket = tcp_socket.recv(1024)
输出接收到的数据
print(‘接收到的数据是:’,recv_socket.decode(‘utf-8’)) #decode是将bytes类型转换为str类型
关闭套接字
tcp_socket.close()
UDP客户端
创建套接字
udp_socket_client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
绑定接口
udp_socket_client.bind((”,8081))
发送或者接受数据
send_data = ‘habiiah’
udp_socket_client.sendto(send_data.encode(‘utf-8’),(‘192.168.1.172’,8080))
接收数据
data_info,ip_info = udp_socket_client.recvfrom(1024)
print(data_info.decode(‘utf-8’))
print(ip_info)
关闭套接字
udp_socket_client.close()