【发布时间】:2015-04-07 04:01:50
【问题描述】:
我正在寻找可以查看 UDP 连接的任何类型的端口侦听器。原因是我正在尝试编写一个程序来查看人们在游戏中的聊天内容并做出相应的响应。 [并希望创建一个用于举办锦标赛的服务器自动化程序]
我尝试了 VB.NET 解决方案,但它会关闭连接,尽管尝试使其并排连接数小时。
进口系统.Net 导入 System.Net.Sockets 公开课形式1 公共子 Form1_Load() 处理 Me.Load '做 '将 iReceivingPort 调暗为整数 = 58690 '创建一个用于读取传入数据的 UdpClient。 'Dim inEndPoint = New IPEndPoint(IPAddress.Parse("192.168.1.100"), iReceivingPort) 'Dim endPoint = New IPEndPoint(IPAddress.Parse("192.168.1.100"), iReceivingPort) 'System.Net.IPAddress.Parse("0.0.0.0"), iReceivingPort '暗接收客户端 = 新 System.Net.Sockets.UdpClient() 'ReceivingClient.ExclusiveAddressUse = False 'ReceivingClient.Client.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, True) 'ReceivingClient.Client.Bind(inEndPoint) 暗 ip = IPAddress.Parse("192.168.1.100") 暗端口 = 65267 暗淡套接字 = 新套接字(AddressFamily.InterNetwork,SocketType.Dgram,ProtocolType.Udp) socket.SetSocketOption(SocketOptionLevel.Socket, SocketOptionName.ReuseAddress, True) socket.Bind(新 IPEndPoint(ip, 端口)) '创建一个 IPEndPoint 来记录发送者的 IP 地址和端口号。 ' IPEndPoint 将允许您读取从任何来源发送的数据报。 '将 RemoteIpEndPoint 调暗为新 System.Net.IPEndPoint(System.Net.IPAddress.Parse("0.0.0.0"), iReceivingPort) 尝试 ' 阻塞,直到消息从远程主机在此套接字上返回。 昏暗的缓冲区 Dim receiveBytes As [Byte]() = socket.Receive(buffer) Dim returnData As String = System.Text.Encoding.ASCII.GetString(receiveBytes) Console.WriteLine(("这是您收到的消息" + returnData.ToString())) 'Console.WriteLine(("这条消息是从" + inEndPoint.Address.ToString() + "的端口号" + inEndPoint.Port.ToString())) 将 e 捕获为异常 Console.WriteLine(e.ToString()) 结束尝试 ' System.Threading.Thread.Sleep(1000) ' 接收客户端.Close() '环形 End Sub 'MyUdpClientCommunicator 结束类找到了解决方案,如果有人想要的话:[PYTHON]
import socket, struct
# the public network interface
HOST = socket.gethostbyname(socket.gethostname())
# create a raw socket and bind it to the public interface
s = socket.socket(socket.AF_INET, socket.SOCK_RAW, socket.IPPROTO_IP)
s.bind(("192.168.1.100", 63578))
while 1:
# Include IP headers
s.setsockopt(socket.IPPROTO_IP, socket.IP_HDRINCL, 1)
# receive all packages
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_ON)
# receive a package
packet, address = s.recvfrom(65565)
print(packet)
# disabled promiscuous mode
s.ioctl(socket.SIO_RCVALL, socket.RCVALL_OFF)
代码不完整,但这是我需要的。
【问题讨论】: