我正在用 Python 构建一个游戏服务器。功能非常明确。服务器将侦听端口 6000,远程客户端将发送请求。然后服务器将与客户端的端口 7000 建立连接。从那时起,客户端将继续向"UP#", "DOWN#", "SHOOT#"
服务器的端口 6000 发送“请求”(基本上是字符串等)。
这就是问题。我已经创建了一个侦听端口 6000 的“服务器”。这意味着我无法将客户端绑定到同一个端口。有没有办法可以在服务器中获取传入请求的数据字符串?到目前为止,我只有这个。
我在这里做错了什么?此问题的任何解决方法?简而言之,我可以在服务器代码中读取来自客户端的传入请求字符串吗?
提前致谢。
def receive_data(self):
errorOccured = False
connection = None
try:
listener = socket.socket() # Create a socket object.
host = socket.gethostname()
port = 6000 # The port that the server keeps listening to.
listener.bind(('', port))
# Start listening
listener.listen(5)
statement = ("I:P0:7,6;8,1;0,4;3,8;3,2;1,6:5,4;9,3;8,7;2,6;1,4;2,7;6,1;6,3:2,1;8,3;5,8;9,8;7,2;0,3;9,4;4,8;7,1;6,8#\n","S:P0;0,0;0#","G:P0;0,0;0;0;100;0;0:4,3,0;5,4,0;3,8,0;2,7,0;6,1,0;5,8,0;1,4,0;1,6,0#", "C:0,5:51224:824#","G:P0;0,0;0;0;100;0;0:4,3,0;5,4,0;3,8,0;2,7,0;6,1,0;5,8,0;1,4,0;1,6,0#","G:P0;0,1;2;0;100;0;0:4,3,0;5,4,0;3,8,0;2,7,0;6,1,0;5,8,0;1,4,0;1,6,0#")
# This is just game specific test data
while True:
c, sockadd = listener.accept() # Establish connection with client.
print 'incoming connection, established with ', sockadd
i = 0 # Just a counter.
while i<len(statement):
try:
self.write_data(statement[i], sockadd[0])
time.sleep(1) # The game sends updates every second to the clients
i = i + 1
#print listener.recv(1024) -- this line doesn't work. gives an error
except:
print "Error binding client"
c.close() # Close the connection
return
except:
print "Error Occurred"