将"virtual hostname"分配给计算机上的服务器/客户端是什么意思?我该怎么做?



我要开始做一项网络编程任务。使用说明如下:

。创建n TCP客户端和服务器(一起,客户端和服务器上)

,其中n为输入参数。

b。为每个对等体分配一个虚拟主机名,例如Peer1、Peer2等。

c。创建一个额外的服务器,作为的中心服务器所有同行。

d。所有n对等体连接到中心服务器,发送一个"你好"消息。

e。每隔一秒,让中央服务器发送一个随机选择的n/2随机对等体的名称。

f。被中央服务器联系过的对等点连接到他们已经得到的对等体,并发送一个随机的

。对于2个节点:

Peer1:发送"Hello"到Central。

Central: received " Hello " from Peer 1。

Peer2:发送"Hello"到Central。

Central: received " Hello " from Peer 2.

Central: sending " Peer2 " to Peer1.

Peer1: received " Peer2 " from Central。

Peer1:发送"5890245"到Peer2。

Peer2: received " 5890245 " from Peer1。

Peer2:发送" 5890245 "得。

Peer1: received " 5890245 " from Peer2.

我对步骤b中的"虚拟主机名"指令感到困惑。这是什么意思?

对于服务器,在Python中我可以这样做:
hostname = #????
mySocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
mySocket.bind((hostname, 50008))
mySocket.listen(1)

如果hostname是'localhost'或'',它将只监听来自这台机器的连接。但是如果我尝试给一个像'Peer1'这样的名字,我得到:

插座。gaierror: [Errno 8] nodename or servname提供,或不知道

可能是因为它试图连接到名为"Peer1"的主机,而这个主机不存在。

那么,如果它们都在我的机器上,我如何向我的一个对等体发送另一个的"名称",并使其连接呢?我的想法是,我只需要给他们一个端口号,并让他们都是"localhost",但这似乎不是什么要求。

如果你有一个语言不可知论的,或其他语言特定的答案,那将是非常感激的!谢谢!

作业告诉你要做以下事情:

创建一组客户端/服务器对。每对代表一个Peer,其中Peer的数量由用户指定。为您创建的每个Peer分配一个唯一的名称(即虚拟主机名)。

然后让每个Peer的服务器套接字打开一个侦听端口,并将其客户端套接字连接到中央服务器。一旦连接,客户端套接字将其分配的对等体名称发送给服务器,因此服务器可以保留所有可用对等体的列表。

然后,中央服务器每秒钟从它的列表中随机选择一半的连接,对于它取出的每个连接,将一个随机Peer的名称写入该连接。

在接收端,当对等体的客户端套接字从中央服务器接收到一个名称时,创建一个到服务器套接字的单独连接,该连接运行在指定的对等体上。这意味着中央服务器必须跟踪哪个IP属于哪个Peer(当Peer连接到它时它可以获取),并将该IP包含在它发出的消息中,以便接收方知道连接到哪里。

一旦建立了单独的连接,向它写入一个随机数,并等待它回显。

当Peer的服务器套接字接收到消息时,将其回显给它来自的客户端。

最新更新