python实现TCP通信
这是C/S架构的实现方式,主要是TCP/UDP通讯,先介绍TCP通信,TCP通讯的流程图:
整体由Client客户端和Server服务端组成。
一 Server服务端
(1)通过socket实例化出来一个TCP的对象(socket())。
(2)绑定IP和端口号。
由于Client客户端是通过IP和端口号来找寻Server服务端的,
所以在Server初始化之后就要绑定一个IP和端口(bind())。
(3)监听。让Server处于监听状态(listen()),
当有Client想要向Server通讯的时候,Client会发起一个连接请求,
如果server的通过了accept(),就可以开始通过read()读取信息,或者通过wrtie()发送信息。
(4)通讯结束以后,端口关闭,等待下一个连接。
import socket#导入socket模块,用于TCP/IP通讯
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#初始化一 个socket模块的对象
serversocket.bind(('127.0.0.1', 55555))#绑定服务器的IP地址,以及通讯端口
serversocket.listen(5)#设置监听,在这里面的参数(int类型)控制连接当前服务器的 最大设备数量
while True:
# 建立客户端连接
conn,addr = serversocket.accept()
print("连接地址: %s" % str(addr))
rec = conn.recv(1024)
print (rec.decode('utf‐8'))
msg = input()
conn.send(msg.encode('utf‐8'))
connsocket.close()
二 Client客户端
当Server服务端处于等待状态后,Client客户端就可以随时来连接。
(1)实例化TCP对象。需要通过socket来实例化出来一个TCP对象(socket())。
(2)然后通过指定的IP地址和端口号发起连接请求(connect())。
(3)连接成功以后就可以通过read()读取信息,或者通过write()发送信息。
(4)通讯结束以后,端口关闭。
import socket,sys,time
clientsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#初始化一 个socket模块的对象
clientsocket.connect(('127.0.0.1', 55555))#建立客户端与服务端的连接 56 while True: 7 #发送数据
ms = input()
clientsocket.send(ms.encode('utf‐8'))
#接收数据
rev = clientsocket.recv(1024)#接收小于1024字节的数据
easygui.msgbox(msg = rev.decode('utf‐8'))
print(rev.decode('utf‐8'))
if ms == 'Q!':
break
clientsocket.close()