客户端 - 服务器检查两个连接

时间:2018-01-08 21:30:46

标签: python sockets networking

在完成我的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)

我如何从服务器发送消息,其中包含有多少项连接到客户端的信息,以及客户端将如何接收该消息?

0 个答案:

没有答案