C#客户端端口与指定的不同

时间:2015-11-21 17:31:55

标签: c# tcp client

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#客户端编写的代码。问题是messageBox的输出是" 127.0.0.1:52296"当我向服务器发送更多消息时,它会不断变化。不应该是" 127.0.0.1:25565" ?当我尝试通过互联网进行操作时,它不起作用

2 个答案:

答案 0 :(得分:1)

使用地址和端口初始化TcpClient时,指定要连接的主机: MSDN link

因此,您的目标主机端口将始终为25565,但客户端用于到达主机的端口可能会有所不同(随机选择一个可用端口)。

答案 1 :(得分:0)

通过查看您正在使用的TcpClient()重载的定义,您将目标端口定义为 25565 ,表示您连接到该远程端口。

您回显的Client对象实际上是Socket,其中有一个名为LocalEndPoint的属性对象。现在您可以向此EndPoint对象询问其Port

关于给定EndPoint.Port不断变化的原因:

这是关于TCP stack如何工作的,如果你不重用那个套接字它将继续改变,这是正常的。