【问题标题】:c# TCPclient set IPc# TCPclient设置IP
【发布时间】:2013-03-19 01:01:06
【问题描述】:

我正在尝试使用 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 发送数据包。我该如何设置?

【问题讨论】:

  • 不行,clientSocket.Connect(remoteHost,remotePort) 报错;
  • 做了一个回答来解释原因,虽然你没有说错误是什么,我认为这可能是问题所在。

标签: c# httpclient port


【解决方案1】:

TcpClient 构造函数的重载允许您将其绑定到特定的本地 IP 地址和端口。见the documentation on MSDN

【讨论】:

    【解决方案2】:

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-23
      • 2023-04-07
      • 2016-04-01
      相关资源
      最近更新 更多