【问题标题】:Python sockets not sending data immediatelyPython套接字不立即发送数据
【发布时间】:2016-05-19 11:26:53
【问题描述】:

我正在用 python 制作游戏。它使用套接字。这是我第一次使用套接字。

这是我的部分代码:

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
serversocket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)

# get local machine name
host = socket.gethostname()                           

port = 9999                                           

# bind to the port
serversocket.bind((host, port))                                  

# queue up to 5 requests
serversocket.listen(5)                                       

player = 1
keys = []
playerSockets = []
print "Waiting for players..."
while True:
    # establish a connection
    clientsocket, addr = serversocket.accept()

    key = id_generator()
    keys.append(key)

    playerSockets.append(clientsocket)
    clientsocket.send(str(player)+"\r\n")
    clientsocket.send(str(key)+"\r\n")
    print "Player " + str(player) + " connected." 
    player = player + 1

    if player > 3 or currentEpochtime() > endConn:
        break

print str(player-1) + " active players.\n"

if(player < 3):
    print "Not enough Players. Closing..."
    serversocket.close()
    quit()


#Other Stuff Continues

现在,只有在下一个发送语句进入我的代码后,它才会发送上述数据(玩家和密钥)。但是,下一个发送语句永远不会发送,因为它正在等待来自客户端的回复。但是客户端没有发送任何东西,因为它还没有收到服务器上一个发送语句的数据。

我一直在努力寻找解决方案很长时间,但无法做到。

请帮忙!

【问题讨论】:

标签: python sockets serversocket python-sockets


【解决方案1】:

不太确定您的问题,您的意思是客户端无法从服务器接收信息?

我尝试使用以下客户端代码:

import socket

s = socket.socket()
host = socket.gethostname()
port = 9999
s.connect((host, port))
print s.recv(1024)
input = raw_input('type anything and click enter... ')
s.send(input)
print "the message has been sent"

好像接收到了服务器发来的数据,可以把数据发回服务器了。

这有帮助吗?

【讨论】:

  • 我认为这与客户端无关。我认为是服务器没有发送数据。这是一个多人游戏,所以有多个客户端。因此,我接受后不会关闭连接。因为我以后会需要它们。这可能是问题吗?
猜你喜欢
  • 2011-01-26
  • 2016-10-16
  • 1970-01-01
  • 2019-11-24
  • 2013-07-28
  • 1970-01-01
  • 2015-10-27
  • 2017-07-13
  • 2011-07-16
相关资源
最近更新 更多