import threading
import socket
a = 0 # 全局变量,=1时结束程序
def recv_msg(tcp_client_socket):
# 接收线程,
global a
while 1:
data = tcp_client_socket.recv(1024) # 接受服务端信息
data1 = data.decode("UTF-8") # 信息解码
if data1.find("bye") != -1: # 判断是否包含bye,是则退出
print("服务器:", data1, "---", data)
print("对方说bye~,断开连接")
a = 1 # 退出程序
break
if len(data1) == 0:
print("服务器已经断开连接!") # 判断服务器是否断开
a = 1
break
print("服务器:", data1, "---", data) # 输出接收到的服务器信息
def send_msg(tcp_client_socket):
while 1:
data = input("发送内容:")
if data.find("bye") != -1: # 判断是否包含bye,是则退出
# 输出后面带\n换行
tcp_client_socket.send(("用户断开...".encode("UTF-8") + "\n".encode("UTF-8")))
print("已经和服务器断开连接!")
global a
a = 1
break
tcp_client_socket.send((data.encode("UTF-8")+"\n".encode("UTF-8")))
if __name__ == '__main__':
tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 选择连接的IP和端口号
# ID_ser = input("需要连接的地址:")
# port_ser = input("端口号:")
# tcp_client_socket.connect((ID_ser, eval(port_ser)))
tcp_client_socket.connect(("192.168.157.129", 8080)) # 设定固定IP和端口号
# 表明连接成功,n是发送的字节数量
n = tcp_client_socket.send(("用户连接成功".encode("UTF-8")+"\n".encode("UTF-8")))
print("连接成功", n)
recv_msg = threading.Thread(target=recv_msg, args=(tcp_client_socket,))
send_msg = threading.Thread(target=send_msg, args=(tcp_client_socket,))
recv_msg.daemon = True
send_msg.daemon = True # 设置守护模式,否则只有一方退出的时候要等待另一方退出才会结束
recv_msg.start()
send_msg.start()
while 1:
if a: # 可以直接使用全局变量a
break
tcp_client_socket.close()
# exit() # 如果有此命令,则需要等input输入结束后才退出
TCP客户端双线程同时收发代码
最新推荐文章于 2022-09-02 15:17:58 发布