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" ?当我尝试通过互联网进行操作时,它不起作用
答案 0 :(得分:1)
使用地址和端口初始化TcpClient时,指定要连接的主机: MSDN link
因此,您的目标主机端口将始终为25565,但客户端用于到达主机的端口可能会有所不同(随机选择一个可用端口)。
答案 1 :(得分:0)
通过查看您正在使用的TcpClient()重载的定义,您将目标端口定义为 25565 ,表示您连接到该远程端口。
您回显的Client
对象实际上是Socket
,其中有一个名为LocalEndPoint
的属性对象。现在您可以向此EndPoint
对象询问其Port
。
关于给定EndPoint.Port
不断变化的原因:
这是关于TCP stack如何工作的,如果你不重用那个套接字它将继续改变,这是正常的。