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

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 に答える
1

特定のローカル IP アドレスとポートにバインドできる TcpClient コンストラクターのオーバーロードがあります。MSDN のドキュメントを参照してください。

于 2013-03-18T16:45:31.403 に答える