C# 客户端端口与指定的不同
C# Client port different from specified
private void button1_Click(object sender, EventArgs e)
{
TcpClient joao = new TcpClient("localhost", Convert.ToInt32(25565));
MessageBox.Show(joao.Client.LocalEndPoint.ToString());
NetworkStream ns = joao.GetStream();
byte[] outbytes = Encoding.ASCII.GetBytes(textBox1.Text);
ns.Write(outbytes, 0, outbytes.Length);
richTextBox1.AppendText("Sent : " + Encoding.ASCII.GetString(outbytes));
ns.Close();
joao.Close();
}
所以,这是我为 C# 客户端编写的代码。问题是消息框的输出是“127.0.0.1:52296”,并且随着我向服务器发送更多消息,它不断变化。不应该是“127.0.0.1:25565”吗?当我尝试通过互联网进行操作时,它不起作用
通过检查您正在使用的 TcpClient() 重载的定义,您将目标端口定义为 25565,这意味着您连接到该远程端口。
Client
object you are echoing is in reality is a Socket
which has a property object called LocalEndPoint
. Now that you could ask this EndPoint
object about its Port
.
关于为什么给定的EndPoint.Port
不断变化:
这与 TCP stack 的工作原理有关,如果您不重复使用该套接字,它会不断变化,这很正常。
使用地址和端口初始化 TcpClient 时,指定要连接的主机:
MSDN link
因此您的目标主机的端口将始终为 25565,但客户端用于到达主机的端口可能会有所不同(随机选择一个可用端口)。
private void button1_Click(object sender, EventArgs e)
{
TcpClient joao = new TcpClient("localhost", Convert.ToInt32(25565));
MessageBox.Show(joao.Client.LocalEndPoint.ToString());
NetworkStream ns = joao.GetStream();
byte[] outbytes = Encoding.ASCII.GetBytes(textBox1.Text);
ns.Write(outbytes, 0, outbytes.Length);
richTextBox1.AppendText("Sent : " + Encoding.ASCII.GetString(outbytes));
ns.Close();
joao.Close();
}
所以,这是我为 C# 客户端编写的代码。问题是消息框的输出是“127.0.0.1:52296”,并且随着我向服务器发送更多消息,它不断变化。不应该是“127.0.0.1:25565”吗?当我尝试通过互联网进行操作时,它不起作用
通过检查您正在使用的 TcpClient() 重载的定义,您将目标端口定义为 25565,这意味着您连接到该远程端口。
Client
object you are echoing is in reality is a Socket
which has a property object called LocalEndPoint
. Now that you could ask this EndPoint
object about its Port
.
关于为什么给定的EndPoint.Port
不断变化:
这与 TCP stack 的工作原理有关,如果您不重复使用该套接字,它会不断变化,这很正常。
使用地址和端口初始化 TcpClient 时,指定要连接的主机: MSDN link
因此您的目标主机的端口将始终为 25565,但客户端用于到达主机的端口可能会有所不同(随机选择一个可用端口)。