【发布时间】:2013-09-10 08:17:22
【问题描述】:
我在监听指定端口时遇到问题。我有以下代码:
Socket = new Socket(AddressFamily.InterNetwork, SocketType.Raw, ProtocolType.Unspecified);
Socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, 1);
Socket.Bind(new IPEndPoint(localAddr, 80));
Socket.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.HeaderIncluded, true);
Socket.IOControl(IOControlCode.ReceiveAll, BitConverter.GetBytes(1), BitConverter.GetBytes(0));
Socket.BeginReceive(Buffer, 0, Buffer.Length, SocketFlags.None, new AsyncCallback(ReadCallback), null);
一切似乎都运行良好,我捕获了传入和传出的数据包,我拥有我需要的所有信息,只有一个例外 - 它侦听所有端口,而不仅仅是我在 Bind() 方法中指定的 80 个端口。有谁知道如何在端口 80 上读取这些内容?
【问题讨论】:
-
是什么让你认为它监听所有端口?
-
可能是因为浏览器正在使用该端口 80 进行 HTTP
-
Pavel K 我知道是因为我从使用完全不同于 80 端口的应用程序接收数据包,并且它们在 BeginReceive() 中都是“可见的”。
-
有人吗?我不想通过检查它们要到达的端口来过滤所有数据包,并只用 80 显示这些......