【发布时间】:2015-05-16 22:33:59
【问题描述】:
我用监听器等在 c# 中制作了基本的 TCP Socket 服务器和客户端控制台应用程序。它适用于在同一台机器上执行的服务器和客户端(127.0.0.1:10048)。我想用同一个网络中的不同机器(都连接到同一个调制解调器)尝试它。 我应该使用哪个 ip 端口?我需要帮助。 谢谢
【问题讨论】:
标签: c# sockets tcp server tcp-ip
我用监听器等在 c# 中制作了基本的 TCP Socket 服务器和客户端控制台应用程序。它适用于在同一台机器上执行的服务器和客户端(127.0.0.1:10048)。我想用同一个网络中的不同机器(都连接到同一个调制解调器)尝试它。 我应该使用哪个 ip 端口?我需要帮助。 谢谢
【问题讨论】:
标签: c# sockets tcp server tcp-ip
您应该使用临时端口范围内的端口。临时端口范围是在您主动连接到服务器时从中选择的端口号范围。关键是它是免费使用的。您的内核将跳过已在使用的端口号,因此您也不必担心。
http://en.wikipedia.org/wiki/Ephemeral_port
除此之外,最好不要硬编码您绑定以连接或发送到的端口号和 IP 地址。
确保您的操作系统防火墙已关闭。例如 windows 防火墙可以阻止这种类型的流量。
不要只使用您检测到未使用的任何空闲端口。例如,您的系统上可能没有运行 FTP 或 Telnet 服务器,但这并不意味着您可以劫持这些端口。从功能的角度来看,如果您这样做,它将起作用,但是您无法在将来可能需要它们的地方再运行这些服务,否则您的应用程序将开始失败。哪个失败取决于哪个应用程序首先启动并首先使用端口。
当你绑定一个 ip@ 时,你应该使用 INADDR_ANY。如果你使用它,环回通信仍然可以工作,你可能已经这样做了,大多数例子都包括它。发送或连接到 IP@ 应该来自配置文件(数据驱动)或命令行参数。 IP@ 当然取决于您要与之通信的机器。
【讨论】:
打开您的 CMD 并输入 ipconfig。在那里你可以看到你应该用来连接的 IPv4 地址。港口真的不重要。确保关闭防火墙以允许连接
【讨论】: