簡體   English   中英

Python套接字未立即發送數據

[英]Python sockets not sending data immediately

我正在用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

現在,僅在下一條send語句出現在我的代碼中之后,它才發送上述數據(玩家和密鑰)。 但是,下一條send語句永遠不會發送,因為它正在等待客戶端的回復。 但是客戶端沒有發送任何東西,因為它仍然沒有從服務器中的前一個send語句接收到數據。

很長時間以來,我一直在努力尋找解決方案,但無法做到。

請幫忙!

不太確定您的問題,是否表示客戶端無法從服務器接收信息?

我嘗試使用以下客戶端代碼:

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"

它似乎可以接收服務器發送的數據,並且能夠將數據發送回服務器。

這有幫助嗎?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM