未処理のソケットをリッスンしてコードを介してWebサイトから応答を読み取ろうとしていますが、これまでのところ、私が実際に興味を持っている着信応答。 着信応答を読むにはどうすればよいですか?未処理のソケットを使用して着信応答を読み取ることができません
EDIT:Wiresharkを使用して、探しているデータがTCP経由で送信されていることがわかりました。
Socket listener = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Unspecified);
IPAddress localIP = Dns.GetHostByName(Dns.GetHostName()).AddressList[0];
listener.Bind(new IPEndPoint(localIP, 0));
byte[] invalue = new byte[4] { 1, 0, 0, 0 };
byte[] outvalue = new byte[4] { 1, 0, 0, 0 };
listener.IOControl(IOControlCode.ReceiveAll, invalue, outvalue);
while (true)
{
byte[] buffer = new byte[1000000];
int read = listener.Receive(buffer);
if (read >= 20)
{
Console.WriteLine("Packet from {0} to {1}, protocol {2}, size {3}",
new IPAddress((long)BitConverter.ToUInt32(buffer, 12)),
new IPAddress((long)BitConverter.ToUInt32(buffer, 16)),
buffer[9],
buffer[2] << 8 | buffer[3]
);
}
}
新しいIPEndPoint(localIP、0)は、ポート0でリッスンすることを指定します。リモートサーバーが接続しているポートですか? –
@RobertLevy - 'new IPEndPoint(localIP、0)'はあなたが使用しているローカルポートを気にしないことを指定します。必要なときにシステムが選択します(必要な場合)。 (Bind、Send、Receive、...)ReceiveAllが設定されたRAWソケットの場合、すべてを受信しているので、決して本当に必要なソケットはありません。 –