我的目标是能够从客户端到服务器,以及从服务器到客户端重复发送一些字符串。这些脚本帮助我发送消息ONCE(从客户端到服务器的一条消息,然后从服务器到客户端的消息)。我想把send(在两者中)放在某种循环中。
这是我的Server.py
import socket
serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host = "192.168.1.3"
port = 8000
print (host)
print (port)
serversocket.bind((host, port))
serversocket.listen(5)
print ('server started and listening')
while 1:
(clientsocket, address) = serversocket.accept()
print ("connection found!")
data = clientsocket.recv(1024).decode()
print (data)
r=input('ENTER HERE')
clientsocket.send(r.encode())
这是我的Client.py
#! /usr/bin/python3
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host ="192.168.1.3"
port =8000
s.connect((host,port))
r=input('Enter message ')
s.send(r.encode())
data = ''
data = s.recv(1024).decode()
print (data)
s.close ()
我希望能够从服务器和客户端发送字符串。但是现在,服务器会侦听客户端的消息。客户端发送消息后,服务器才能返回消息。
除此之外,我每个人只能发送一条消息。 如何启用独立的消息传输(和无限数量的消息)?
答案 0 :(得分:1)
你需要线程。
在服务器中,在客户端连接后创建两个单独的线程。一个线程将持续监听传入的消息,另一个线程将处理消息的发送。同样的事情将适用于客户。
//server
//client is client_socket
def thread_read(client):
listen_for_incoming_messages_from_client
def thread_write(client):
message_sending_code_here
and for client side, parameter will be server (server_socket)
这样,您就可以处理客户端和服务器之间的独立消息传递