Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/342.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
python中TCP套接字中两个客户端之间的简单数据传输_Python_Sockets_Tcp - Fatal编程技术网

python中TCP套接字中两个客户端之间的简单数据传输

python中TCP套接字中两个客户端之间的简单数据传输,python,sockets,tcp,Python,Sockets,Tcp,我正在尝试开发一个类似游戏的应用程序,其中我有两名玩家,他们输入单个单词,另一名玩家尝试想出另一个单词,该单词以另一名玩家单词的最后两个字符开头。例如,Player1输入:计算机,Player2输入:错误,Player1输入:橙色,Player2输入:性别等等。 我有一个server.py: import socket host = socket.gethostname() port = 12345 s = socket.socket(socket.AF_INET,socket.SOCK_STR

我正在尝试开发一个类似游戏的应用程序,其中我有两名玩家,他们输入单个单词,另一名玩家尝试想出另一个单词,该单词以另一名玩家单词的最后两个字符开头。例如,Player1输入:计算机,Player2输入:错误,Player1输入:橙色,Player2输入:性别等等。 我有一个server.py:

import socket
host = socket.gethostname()
port = 12345
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)# TCP socket object
s.bind((host,port))
s.listen(5)
print ("Waiting for players...")
namelist = []
def getLastTwoStrings(str):
   last2 = str[-2:]
   print (last2)

def getFirstTwoStrings(str):
   first2 = str[:2]
   print (first2)

while True:
    clientSocket, address = s.accept()
    data = clientSocket.recv(1024)
    string = data.decode("utf-8")
    clientSocket.send(bytes(string,"utf-8"))
    namelist.append(string)
    getLastTwoStrings(string)
    getFirstTwoStrings(string)
        
clientSocket.close()
和player1.py

import socket
host = socket.gethostname()
port = 12345
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
print("Player 1(and Player 2) please enter a word:")
a=input()
data = s.send(bytes(a,"utf-8"))         
s.close()   
和player2.py

import socket
host = socket.gethostname()
port = 12345
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
print("Player 2 please enter a word:")
a=input()
data = s.send(bytes(a,"utf-8"))         
s.close()   

但是我需要把Player1的单词转给Player2。我可以将他们的每一句话发送到服务器并返回给他们。但不能单独做。有人知道如何实现这一点吗?

每次调用
s.accept
都会覆盖当前客户端套接字
clientSocket
。您需要保持两个客户端套接字连接。服务器可以从客户机接收一个,然后发送给另一个,反过来发送。