Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#套接字,如何获取所有侦听(套接字)计算机的IP地址和端口_C#_Sockets - Fatal编程技术网

C#套接字,如何获取所有侦听(套接字)计算机的IP地址和端口

C#套接字,如何获取所有侦听(套接字)计算机的IP地址和端口,c#,sockets,C#,Sockets,我使用C#套接字在设备(客户端)和计算机(服务器)之间建立连接。 除了我试图避免用户在设备上输入要连接的IP地址和端口号之外,所有这些都正常工作。相反,我想要一个列表框或所有IP地址的下拉列表,带有监听套接字。只是想知道是否有一种方法可以通过侦听(套接字)获取主机的所有IP地址和端口号 谢谢你的帮助!:) 您要求执行的操作称为端口扫描。它主要包括测试一个范围内的每个IP地址和每个端口,并报告该尝试的成功。它的速度很慢,如果网络上存在任何类型的威胁监视,它将导致大量警报,因为端口扫描是攻击者试图发

我使用C#套接字在设备(客户端)和计算机(服务器)之间建立连接。 除了我试图避免用户在设备上输入要连接的IP地址和端口号之外,所有这些都正常工作。相反,我想要一个列表框或所有IP地址的下拉列表,带有监听套接字。只是想知道是否有一种方法可以通过侦听(套接字)获取主机的所有IP地址和端口号


谢谢你的帮助!:)

您要求执行的操作称为端口扫描。它主要包括测试一个范围内的每个IP地址和每个端口,并报告该尝试的成功。它的速度很慢,如果网络上存在任何类型的威胁监视,它将导致大量警报,因为端口扫描是攻击者试图发现网络漏洞的方式之一

所以简而言之,这是一个坏主意,可能没有足够的响应能力供您用于此目的。相反,您可能会考虑使用中央服务器作为每个服务器将登记的“目录”。
或者,您可以在子网上等待服务器响应。例如,这就是一些对等网络在Windows中的工作方式。请注意,这假定您也是服务器的开发人员,您可以添加服务器侦听广播所需的逻辑。

通过使用UDP广播,您可以将数据发送到正在固定端口侦听的服务器。以下是工作示例

 foreach (IPAddress ip in allLocalNetworkAddresses.AddressList)
        {
            Socket client = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);


            //Allow sending broadcast messages
            client.SetSocketOption(SocketOptionLevel.Socket,
            SocketOptionName.Broadcast, 1);

               //Create endpoint, broadcast.
            IPEndPoint AllEndPoint = new IPEndPoint(IPAddress.Broadcast, Port);                     

            byte[] sendData = Encoding.ASCII.GetBytes("1");
           //Send message to everyone on this network
            client.SendTo(sendData, AllEndPoint);
            Console.Write("Client send '1' to " + AllEndPoint.ToString() +
            Environment.NewLine);

所以,您想知道如何进行端口扫描?或者您有固定的端口号,您想检查网络中的所有计算机是否正在侦听特定的端口?如下所述,端口扫描是一个坏主意。那么dzendras,固定端口号与端口扫描有何不同?谢谢:)如果你有一个固定的端口,你可以使用UDP将一个数据包发送到广播中的一个特定端口。只有服务器的实例才会读取它并向您返回响应。我在下面贴了C#example。看看,告诉我这是不是你需要的。