Python用TCP编写一个简单的通信实例
Python实现UDP通信的实例:https://blog.csdn.net/SenrendipityAl/article/details/103381279
TCP通信
TCP 每次建立通信,都需要三次握手,确定双方状态完毕,在发送数据。如果发送的数据出现了异常,TCP 也内置了一些处理的机制,确保了数据能准确到达目的地。
接下来我尝试用Python实现TCP协议的通信。
TCP服务器
import socket
# 参数调整
HOST = '127.0.0.1'
PORT = 9999
BufferSize = 1024
# socket.AF_INET (IPV4)
# socket.SOCK_STREAM (TCP)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定客户端IP和端口号
s.bind((HOST, PORT))
# 最大允许连接数量
s.listen(3)
# 阻塞,当出现客户端的请求完成连接,并获取数据和客户端的信息
conn, addr = s.accept()
while True:
# 读取客户端发送过来的数据
data = conn.recv(BufferSize)
print("Received from %s: %s" % (addr, data.decode('gb2312')))
# 把客服端发送过来的数据又转发回去
conn.sendall('I got it!'.encode('gb2312'))
# 关闭客户端连接
# conn.colse()
输出结果
注意事项
需要注意的是,在本实例中,仅实现了端到端多次通信的效果,事实上,TCP服务器完全可以接受多个客户端的连接,即上述代码中s.listen(3)中规定了最大连接数。
如果想要同时实现多个连接,只需将连接客户端的代码放入While循环,并在While最后关闭连接即可。
TCP客户机
# 导入套接字的包
import socket
# 参数调整
HOST = '127.0.0.1'
PORT = 9999
BufferSize = 1024
# socket.AF_INET (IPV4)
# socket.SOCK_STREAM (TCP)
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务端
s.connect((HOST, PORT))
while True:
# 输入待发送数据
print('Please input your data:')
InputData = input('> ')
# 发送数据到服务端
s.sendall(InputData.encode('gb2312'))
# 接收服务端返回数据
ReceiveData = s.recv(BufferSize)
print(ReceiveData.decode('gb2312'))
# 关闭 socket
# s.close()
输出结果
注意事项
暂无
还没有评论,来说两句吧...