我在侦听指定端口时遇到问题。我有以下代码:
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上阅读这些?
答案 0 :(得分:0)
我只需要一个例外就能获得所需的所有信息 - 它会监听所有端口,而不仅仅是我在Bind()方法中指定的80个端口
没有任何例外。从您发布的代码中,它不可能从端口80以外的任何端口读取。
答案 1 :(得分:0)
从Microsoft(http://msdn.microsoft.com/en-us/library/windows/desktop/ee309610(v=vs.85).aspx)阅读文档告诉我们使用此行
Socket.IOControl(IOControlCode.ReceiveAll, BitConverter.GetBytes(1), BitConverter.GetBytes(0));
网络接口控制器将捕获局域网上所有 IPv4或IPv6流量。我不知道如何通过配置将其限制到某个端口,所以我认为你必须自己过滤数据。