在完成我的pygame的整个客户端代码之后,我需要使用客户端 - 服务器编程添加多人游戏功能。
我创建了一个'服务器'文件:
import socket
import sys
import threading
from _thread import *
import time
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
host=socket.gethostname()
ip=socket.gethostbyname(host)
port=8000
connections=[]
print('Your local ip address is',ip)
s.bind((host,port))
s.listen(2)
print('Waiting for a connection...')
def threaded_client(connection):
while True:
data=connection.recv(2048) #anything we receive
if not data:
break
connection.close()
while True:
connection,address=s.accept()
print(address,'has connected to server hosted at port',address[1])
connections.append(address)
print(connections)
start_new_thread(threaded_client,(connection,))
在我的游戏中,系统会提示用户输入IP地址。在同一网络上的两台不同的PC上,我输入了相同的IP,服务器打印出两台IP都连接到服务器。
在主机客户端,我希望他们能够显示一个屏幕,显示“等待传入的连接”#39;我已编码此屏幕,但不确定如何将信息发送给客户端,以便在与服务器的连接少于2时显示(因为游戏是1v1)。
在我的主文件中:
if click[0]==1 and action=='classselection':
host=socket.gethostname()
ip=socket.gethostbyname(host)
if address==ip:
ishost=True
else:
ishost=False
try:
s=socket.socket()
address=address
port=8000
connectionwaitingmenu()
while True:
s.connect((address,port))
print('The connection is still established.')
except:
connectionmenu(True)
我如何从服务器发送消息,其中包含有多少项连接到客户端的信息,以及客户端将如何接收该消息?