0

我正在尝试使用 httpclient 发送数据包

TcpClient tc = new TcpClient(ip, 4500);

            string s = "A7007000601D3B00";

            byte[] arr = new byte[s.Length/2];
            for ( var i = 0 ; i<arr.Length ; i++ ){
             arr[i] = (byte)Convert.ToInt32(s.Substring(i*2,2), 16);
            }

            NetworkStream stream = tc.GetStream();
            stream.Write(arr, 0, arr.Length);
            tc.Close();

问题是它从端口 47109 发送,但是我需要使用端口 46324 发送数据包。我该如何设置?

4

2 回答 2

1

TcpClient 构造函数的重载允许您将其绑定到特定的本地 IP 地址和端口。请参阅MSDN 上的文档

于 2013-03-18T16:45:31.403 回答
1

示例中的原因Is there a way to specify the local port to used in tcpClient? 不起作用可能是因为列表中的第一个地址实际上不是本地机器的 ip 地址。这样的事情可能会解决问题并提取正确的本地 IP 地址:

string remoteIP = "x.x.x.x";
IPAddress ipAddress = Dns.GetHostEntry(Dns.GetHostName()).AddressList.Where(x => x.AddressFamily == AddressFamily.InterNetwork).First();
IPEndPoint ipLocalEndPoint = new IPEndPoint(ipAddress, 47109);
TcpClient clientSocket = new TcpClient(ipLocalEndPoint);
clientSocket.Connect(remoteIP, 4500);
于 2013-03-18T17:01:06.487 回答