# server.py
import socket
from multiprocessing import Process
from threading import Thread
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 表示将SO_REUSEADDR标记为TRUE,操作系统会在服务器socket被关闭或服务器进程终止后马上释放该服务器的端口,
# 否则操作系统会保留几分钟该端口。
server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
server.bind(('127.0.0.1', 9095))
server.listen(5)
def communicate(conn, address):
print(address)
while True:
try:
msg = conn.recv(1024)
if not msg:
break
conn.send(msg.upper())
except Exception:
break
if __name__ == '__main__':
while True:
conn, address = server.accept()
# p = Process(target=communicate, args=(conn, address))
# p.start()
t = Thread(target=communicate,args=(conn, address))
t.start()
# client.py
import socket
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('127.0.0.1', 9095))
while True:
cmd = input('>>>').strip()
if not cmd:
continue
client.send(cmd.encode('utf8'))
msg = client.recv(1024)
print(msg.decode('utf8'))