# tcp服务端 import socket server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建服务端的套接字对象,声明为网络传输用,数据为基于tcp协议的数据流形式 server.bind(('127.0.0.1', 3000)) # 绑定ip与port server.listen(5) # 声明半连接池的容量为5 while 1: print('正在等待客户端建立连接...') conn, client_addr = server.accept() # 等待客户端来建立连接 while 1: # 客户端建立连接后,等待数据传来 print('正在等待客户端传输数据...') try: recv_data = conn.recv(1024) # 从客户端接收数据,声明每次接受数据的最大字节数为1024 send_data = ('收到:' + recv_data.decode('utf-8')).encode('utf-8') # 将收到的数据做一些处理 conn.send(send_data) # 将处理好的数据再发给客户端 except Exception as e: print(e) break # 若发生异常,比如客户端关闭,则退出通信循环 conn.close() # 通信循环结束后,立即关闭当前连接,从半连接池接入下个客户端或等待新的客户端
# tcp客户端 import socket client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 创建客户端的套接字对象,声明为网络传输用,数据为基于tcp协议的数据流形式 client.connect(('127.0.0.1', 3000)) # 声明服务端的ip与port,以建立与服务端的连接 while 1: send_data = input('发送给服务端的数据:').strip().encode('utf-8') if len(send_data) == 0: continue # 若发送为空,重新发送 client.send(send_data) # 将客户端输入的数据发送给服务端 recv_data = client.recv(1024) # 从服务端接收的数据,声明每次接受数据的最大字节数为1024 print(recv_data.decode('utf-8'))