网络示例 - IP 地址

Network example - IP address

我刚开始学习网络知识,并按照 Kurose 和 Ross 的书学习。他们有以下 python 代码片段来说明 UDP 协议。

简单客户端的代码由

给出
from socket import *
serverName = ‘hostname’     # Use IP adresse here
serverPort = 12000
clientSocket = socket(socket.AF_INET, socket.SOCK_DGRAM) 
message = raw_input(’Input lowercase sentence:’) 
clientSocket.sendto(message,(serverName, serverPort)) 
modifiedMessage, serverAddress = clientSocket.recvfrom(2048) 
print modifiedMessage
clientSocket.close()

服务器代码由

给出

from socket import *
serverPort = 12000
serverSocket = socket(AF_INET, SOCK_DGRAM) 
serverSocket.bind((’’, serverPort))
print ”The server is ready to receive” 
while 1:
    message, clientAddress = serverSocket.recvfrom(2048) 
    modifiedMessage = message.upper() 
    serverSocket.sendto(modifiedMessage, clientAddress)

我很幸运有两台笔记本电脑,并考虑让一台 运行 连接客户端和一台服务器。这是天真吗?我正在努力找出如何在此处指定 serverName 变量或 IP 地址。两台笔记本电脑都在同一个 WiFi 网络中(即使它的 eduroam 可能会导致问题?)

当我使用终端查找本地 IP 地址时,一个给我 10.17.47.158,另一个说 100.112.82.103。但是仅仅使用这些IP地址似乎并不能奏效。我究竟做错了什么?还有为什么他们这么不一样,是不是连在同一个路由器上?

我可以 运行 在两台不同的笔记本电脑上使用这两个应用程序吗?当我指定正确的 IP 地址时,一切应该都能正常工作吗?或者我在这里完全错了?

你有两个选择

  1. 运行 客户端和服务器 使用同一台计算机 - 这样你需要做的就是在 IP 中写入 localhost 或 127.0.0.1领域。
  2. 运行 在 2 台计算机上 - 在此期间您可能会遇到一些问题。它们可能来自多种原因,但 最广为人知的问题之一是 防火墙

我要做的是按照以下步骤操作:

  1. 运行 服务器和客户端在同一台计算机上以确保代码正常工作
  2. 将 ping 从一台计算机发送到另一台计算机并确保我收到答复。
  3. 关闭两台计算机上的防火墙 - 并尝试 运行 软件。如果您在第 3 步中没有收到 ping,请立即尝试。如果现在 ping 不工作 跳转到步骤 5/6
  4. 如果成功到第 3 步 - 打开防火墙 - 并在服务器上设置防火墙规则以允许端口 12000。
  5. 通常-到这里你会有一个工作的服务器和一个客户端。但是如果第 4 步不起作用 - 我会打开 wireshark 并检查是否接收到服务器并从客户端发送的数据包-并将使用我拥有的数据从这里继续研究。
  6. 看起来您的两台计算机在不同的子网中 - 因此我要做的是将它们放在具有相同子网的同一网络中。如果您希望它们位于不同的子网 - 您必须在这两个子网之间的路由器中配置路由。

祝你好运!