向服务器/客户端发送字符串(python)

时间:2014-01-19 13:24:00

标签: python sockets networking

我的目标是能够从客户端到服务器,以及从服务器到客户端重复发送一些字符串。这些脚本帮助我发送消息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 ()

我希望能够从服务器和客户端发送字符串。但是现在,服务器会侦听客户端的消息。客户端发送消息后,服务器才能返回消息。

除此之外,我每个人只能发送一条消息。 如何启用独立的消息传输(和无限数量的消息)?

1 个答案:

答案 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)

这样,您就可以处理客户端和服务器之间的独立消息传递