服务器端
from socket import *
from threading import Thread
server = socket(AF_INET, SOCK_STREAM)
server.bind(('', 8080))
server.listen(5)
def process_client(socke, addr):
sock = socke
print('连接到客户端%s:%s:' % addr)
def receive_(sock, addr):
while True:
ge_data = sock.recv(1024)
if (ge_data == 'exit') or (not ge_data):
print('客户端%s断开连接' % (addr,))
sock.close()
break
print('收到客户端%s发送的消息为:%s' % (addr, ge_data.decode("UTF-8")))
def send_(sock, addr):
while True:
try:
res_data = input('请输入回复给%s的内容:' % (addr,))
sock.send(res_data.encode('UTF-8'))
except Exception as err:
print("未成功发送")
sock.close()
break
receive_thread = Thread(target=receive_, args=(sock, addr))
send_thread = Thread(target=send_, args=(sock, addr))
receive_thread.start()
send_thread.start()
while True:
sock, addr = server.accept()
client_thread = Thread(target=process_client, args=(sock, addr))
client_thread.start()
server.close()
客户端
from socket import *
from threading import Thread
import sys
import signal
client = socket(AF_INET, SOCK_STREAM)
client.connect(("server.natappfree.cc", 40637))
def receive_():
while True:
ge_data = client.recv(1024)
if (ge_data == "exit") or (not ge_data):
print("无消息")
break
print("接收到的信息:%s" % ge_data.decode("utf-8"))
def send_():
while True:
try:
res_data = input('请输入发送的内容:')
client.send(res_data.encode('UTF-8'))
if res_data == 'quit':
client.close()
break
except Exception as err:
print('经历了一个目前还未知的错误')
break
receive_thread = Thread(target=receive_)
receive_thread.daemon = True
receive_thread.start()
send_thread = Thread(target=send_)
send_thread.daemon = True
send_thread.start()
def signal_handler(signal, frame):
print('You pressed Ctrl+C!')
# client.close()
# stop_thread()
sys.exit(0)
# 监听ctrl c 主动中断脚本
signal.signal(signal.SIGINT, signal_handler)
while receive_thread.is_alive() and send_thread.is_alive():
pass
更新中......