把程序整理了下,参考了前面大哥的注释
打开anaconda,先运行服务器程序:
# -*- coding: utf-8 -*- #server.py import socket,threading,time #创建一个基于IPv4和TCP协议的Socket: s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 监听端口: s.bind(('127.0.0.1', 9999)) s.listen(5) print('Waiting for connection...') #每个连接都必须创建新线程(或进程)来处理, #否则,单线程在处理连接的过程中,无法接受其他客户端的连接: def tcplink(sock, addr): print('Accept new connection from %s:%s...' % addr) sock.send(b'Welcome!') while True: data = sock.recv(1024) time.sleep(1) if not data or data.decode('utf-8') == 'exit': break sock.send(('Hello, %s!' % data.decode('utf-8')).encode('utf-8')) sock.close() print('Connection from %s:%s closed.' % addr) #服务器程序通过一个永久循环来接受来自客户端的连接, #accept()会等待并返回一个客户端的连接: while True: # 接受一个新连接: sock, addr = s.accept() # 创建新线程来处理TCP连接: t = threading.Thread(target=tcplink, args=(sock, addr)) t.start()
打开另一个anaconda终端,再运行客户端程序:
# -*- coding: utf-8 -*- #client.py #要测试这个服务器程序,我们还需要编写一个客户端程序: # 导入socket库: import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 建立连接: s.connect(('127.0.0.1', 9999)) # 接收欢迎消息: print(s.recv(1024).decode('utf-8')) for data in [b'Michael', b'Tracy', b'Sarah']: # 发送数据: s.send(data) print(s.recv(1024).decode('utf-8')) s.send(b'exit') s.close()
结果:
Welcome! Hello, Michael! Hello, Tracy! Hello, Sarah!
Sign in to make a reply
Phioton
把程序整理了下,参考了前面大哥的注释
打开anaconda,先运行服务器程序:
打开另一个anaconda终端,再运行客户端程序:
结果: