Python-TCP编程-模拟QQ聊天
客户端
from socket import *
from threading import Thread
# 创建套接字
tcp_client = socket(AF_INET, SOCK_STREAM)
# 链接服务器
connect_address = ('192.168.28.44', 6666)
tcp_client.connect(connect_address)
def send_data(tcp_client):
while True:
# 发送数据到服务器
content = input('请输入内容:')
tcp_client.send(content.encode('gb2312'))
def recv_data(tcp_client):
while True:
# 接收来自服务器的数据
recv_content = tcp_client.recv(1024)
if len(recv_content) == 0:
break
print(recv_content.decode('gb2312'))
Thread(target=recv_data,args=(tcp_client,)).start()
Thread(target=send_data,args=(tcp_client,)).start()
服务端
from socket import *
from threading import Thread
# 创建套接字
tcp_socket = socket(AF_INET,SOCK_STREAM)
# 绑定端口
tcp_socket.bind(('192.168.28.44',6666))
# 设置监听模式
tcp_socket.listen(3)
tcp_socket.setsockopt(SOL_SOCKET,SO_REUSEADDR,1)
# 接收数据
def recv_data(new_tcp_socket,new_tcp_address):
while True:
recv_data = new_tcp_socket.recv(1024)
print('%s:%s' % (str(new_tcp_address), recv_data.decode('gb2312')))
# 发送数据
def send_data(new_tcp_socket):
while True:
send_content = input('请输入内容:')
send_content = '1:12312312312:meinv:mm-pc:32:%s'%send_content
new_tcp_socket.send(send_content.encode('gb2312'))
while True:
# 创建新的套接字和地址
new_tcp_socket, new_tcp_address = tcp_socket.accept()
# 创建并调用子线程
Thread(target=recv_data,args=(new_tcp_socket,new_tcp_address)).start()
Thread(target=send_data,args=(new_tcp_socket,)).start()
注:绑定的ip地址是我的Linux系统的地址,请自行改变