예제 #1
0
        private NodeStatusResponse SendNodeStatusRequest(NodeStatusRequest request)
        {
            UdpClient  client         = new UdpClient();
            IPEndPoint serverEndPoint = new IPEndPoint(m_serverAddress, NetBiosNameServicePort);

            client.Connect(serverEndPoint);

            byte[] requestBytes = request.GetBytes();
            client.Send(requestBytes, requestBytes.Length);
            byte[] responseBytes = client.Receive(ref serverEndPoint);
            return(new NodeStatusResponse(responseBytes, 0));
        }
예제 #2
0
        public string?GetServerName()
        {
            NodeStatusRequest request = new NodeStatusRequest
            {
                Header   = { QDCount = 1 },
                Question =
                {
                    Name = "*".PadRight(16, '\0')
                }
            };
            NodeStatusResponse response = SendNodeStatusRequest(request);

            return((from entry in response.Names let suffix = NetBiosUtils.GetSuffixFromMSNetBiosName(entry.Key) where suffix == NetBiosSuffix.FileServiceService select entry.Key).FirstOrDefault());
        }
예제 #3
0
        public string GetServerName()
        {
            NodeStatusRequest request = new NodeStatusRequest();

            request.Header.QDCount = 1;
            request.Question.Name  = "*".PadRight(16, '\0');
            NodeStatusResponse response = SendNodeStatusRequest(request);

            foreach (KeyValuePair <string, NameFlags> entry in response.Names)
            {
                NetBiosSuffix suffix = NetBiosUtils.GetSuffixFromMSNetBiosName(entry.Key);
                if (suffix == NetBiosSuffix.FileServiceService)
                {
                    return(entry.Key);
                }
            }

            return(null);
        }