服务器的原始套接字响应,无法使用原始套接字读取传入响应

该博客讨论了如何利用C#编程语言创建一个原始套接字来监听网络流量,尤其是尝试从网站读取HTTP响应。作者遇到了只能捕获传出请求而无法读取传入响应的问题。通过设置IOControlCode.ReceiveAll,他们能够监听所有通过的TCP数据包,但仍然需要解决解析HTTP响应的具体细节。Wireshark被用作辅助工具来确认数据包是在TCP层面上传输的。
摘要由CSDN通过智能技术生成

我想通过监听原始套接字通过代码从网站读取响应,但迄今为止,我只能读取由我的计算机发送的传出请求,而不是我真正感兴趣的即将到来的回复。 我该如何去阅读传入的回复?无法使用原始套接字读取传入响应

编辑:使用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]

);

}

}

+0

新的IPEndPoint(localIP,0)指定您要侦听端口0.是否是远程服务器连接的端口? –

2011-01-30 03:35:43

+0

@RobertLevy - `new IPEndPoint(localIP,0)`指定你不关心你使用的是什么本地端口。当(如果)你需要一个时,系统将选择一个。 (绑定,发送,接收,...)对于设置了ReceiveAll的RAW套接字,您永远不需要一个,因为您正在接收所有内容。 –

2015-03-23 04:34:31

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值