c # hamachi application - PullRequest
       5

c # hamachi application

0 голосов
/ 24 июня 2011

Я создал приложение с сервером и клиентским инструментом, используя сокеты и т. Д. При использовании моего кода на моем компьютере работает. Теперь я установил программное обеспечение Himachi и мне нужно использовать это программное обеспечение в своем приложении, чтобы при подключении пользователя ко мне созданное приложение могло использоваться в этой сети. Обратите внимание, что я впервые использую сокеты. Проблема в том, что они не соединяются друг с другом, и это также дает мне эту ошибку при изменении ip и порта: Запрошенный адрес недопустим в его контексте

Инструмент отправки

public Send(string Group, string port, string ttl, string rep, string data) 
{
 IPAddress ip;
 try
        {
            Console.WriteLine("Send on Group: {0} Port: {1} TTL: {2}", Group,port,ttl);

            ip = IPAddress.Parse(Group);

            Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

            s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip));

            s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.MulticastTimeToLive, int.Parse(ttl));

            IPEndPoint ipep = new IPEndPoint(IPAddress.Parse(Group),int.Parse(port));

            Console.WriteLine("Connecting...");

            s.Connect(ipep);

            byte[] byData = System.Text.Encoding.ASCII.GetBytes(data);
            s.Send(byData, SocketFlags.None);

            Console.WriteLine("Closing Connection...");
            s.Close();
        } 
        catch(System.Exception e) { Console.Error.WriteLine(e.Message); }
    }

Инструмент получения

public string RecvData(string Group, string port) 
    {
        string str = "";

        Socket s = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp);

        IPEndPoint ipep = new IPEndPoint(IPAddress.Any, int.Parse(port));
        s.Bind(ipep);

        IPAddress ip = IPAddress.Parse(Group);

        s.SetSocketOption(SocketOptionLevel.IP, SocketOptionName.AddMembership, new MulticastOption(ip,IPAddress.Any));

        // Getting the data
        byte[] buffer = new byte[1024];
        int iRx = s.Receive(buffer);

        str = System.Text.Encoding.ASCII.GetString(buffer, 0, buffer.Length);

        // Closing a Socket
        s.Close();

        return str;
    }

Спасибо

1 Ответ

0 голосов
/ 24 июня 2011

Итак, ваша проблема в том, что вы пытаетесь использовать VPN (hamachi) для соединения двух приложений - сервера и клиента, чтобы клиент мог получать сообщения с сервера, верно? Я думаю, что ошибка «Запрошенный адрес недопустима в его контексте» вызвана тем, что вы используете VPN, но я не знаю, как это можно решить, извините. Я думаю, что, возможно, вам также могут понадобиться идентификатор сети и пароль, но опять же я не уверен. Пожалуйста, держите нас в курсе, потому что это очень интересный вопрос.

...