【问题标题】:What ip/port should i use for TCP Socket Server/Client connection?我应该为 TCP Socket 服务器/客户端连接使用什么 ip/port?
【发布时间】:2015-05-16 22:33:59
【问题描述】:

我用监听器等在 c# 中制作了基本的 TCP Socket 服务器和客户端控制台应用程序。它适用于在同一台机器上执行的服务器和客户端(127.0.0.1:10048)。我想用同一个网络中的不同机器(都连接到同一个调制解调器)尝试它。 我应该使用哪个 ip 端口?我需要帮助。 谢谢

【问题讨论】:

标签: c# sockets tcp server tcp-ip


【解决方案1】:

您应该使用临时端口范围内的端口。临时端口范围是在您主动连接到服务器时从中选择的端口号范围。关键是它是免费使用的。您的内核将跳过已在使用的端口号,因此您也不必担心。

http://en.wikipedia.org/wiki/Ephemeral_port

除此之外,最好不要硬编码您绑定以连接或发送到的端口号和 IP 地址。

确保您的操作系统防火墙已关闭。例如 windows 防火墙可以阻止这种类型的流量。

不要只使用您检测到未使用的任何空闲端口。例如,您的系统上可能没有运行 FTP 或 Telnet 服务器,但这并不意味着您可以劫持这些端口。从功能的角度来看,如果您这样做,它将起作用,但是您无法在将来可能需要它们的地方再运行这些服务,否则您的应用程序将开始失败。哪个失败取决于哪个应用程序首先启动并首先使用端口。

当你绑定一个 ip@ 时,你应该使用 INADDR_ANY。如果你使用它,环回通信仍然可以工作,你可能已经这样做了,大多数例子都包括它。发送或连接到 IP@ 应该来自配置文件(数据驱动)或命令行参数。 IP@ 当然取决于您要与之通信的机器。

【讨论】:

  • 感谢您的回答。我已成功传输数据(字符、字符串等),但是当我尝试写入文件字节(尝试文件传输)时,它会阻塞。我应该在调制解调器页面中为文件传输或端口转发做不同的工作吗?
  • 仅当您希望从本地网络外部访问您的服务器时才需要端口转发。
  • 好吧。再次感谢。使用不同的临时端口(50101)完成。现在我有 2 个端口和 2 个不同的连接。但没问题。
【解决方案2】:

打开您的 CMD 并输入 ipconfig。在那里你可以看到你应该用来连接的 IPv4 地址。港口真的不重要。确保关闭防火墙以允许连接

【讨论】:

  • 端口很重要。
猜你喜欢
  • 1970-01-01
  • 2010-11-29
  • 2012-08-31
  • 2022-01-15
  • 2018-12-30
  • 2017-08-04
  • 2021-08-12
  • 2017-07-15
  • 2015-10-15
相关资源
最近更新 更多