TCP服务器:
from socket import *
from icecream import ic
tcpSock = socket(AF_INET, SOCK_STREAM) # 创建套接字对象,用于接收连接请求。STREAM代表TCP
tcpSock.bind(('', 8765)) # 设置绑定本机的8765端口
tcpSock.listen(5) # 设置最大连接数为5,最多5个人排队
ic(tcpSock.accept()) # 若有客户端连接,会返回两个值,一是新的套接字对象(用于客服端的数据收发),二是客户端的IP地址和端口号
newSock, clientAddr = tcpSock.accept() # 上一行为第一次监听,此行为第二次监听
print(newSock, clientAddr)
data = newSock.recv(1024) # tcp接收数据用recv(),udp用recvfrom()
ic(data)
print(data.decode('gbk'))
newSock.send('穷且益坚,不坠青云之志'.encode('gbk')) # tcp发送数据用send(),不需要填写接收方的地址和端口;udp用sendto(),需要填写地址和端口
newSock.close() # 完成数据发送则关闭
tcpSock.close() # 关闭用于监听的套接字,不能再接收客户端的连接
TCP客户端:
from socket import *
from icecream import ic
clientSocket = socket(AF_INET, SOCK_STREAM) # 创建客服端的套接字对象
clientSocket.connect(('192.168.0.108', 8765)) # 用connect()方法输入客户端所要连接的服务器的地址和端口,对服务器发送连接请求
clientSocket.send('老当益壮,宁移白首之心'.encode('gbk'))
data = clientSocket.recv(1024)
ic(data)
print(data.decode('gbk'))
clientSocket.close() # 关闭客户端

版权声明:本文为gdd1990shl原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。