C# - Odbieranie danych tylko od danego ip w UdpClient.
Witam. Mój problem jest taki: zacząłem robić prostą grę multiplayer i realtime. dla każdego gracza, który się zaloguje przydzielam osobny wątek. I tu jest moje pytanie. Gdyby serwer miał obsłużyć 5 graczy, to gracz nr 2 wysyłając do serwera informacje o swoim ruchu nadałby je na wszystkich graczy (są na tym samym porcie). Przy wysyłaniu informacji nie ma problemu, bo sa one ukierunkowane na dane IP. Czy można w klasie UdpClient, która będzie ustawiona na serwer:
[code]UdpClient udp = new UdpClient(8080);[/code] ustawić odbieranie danych tylko z danego IP?? Bardzo proszę o pomoc, to dla mnie ważny projekt.
P.S.: Mam jeszcze jeden problem :/. Mianowicie, mam taki kod:
[code]
void tracking()
{
UdpClient server = new UdpClient(1234);
while (true)
{
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
Byte[] receivedBytes = server.Receive(ref RemoteIpEndPoint);
string nad = Encoding.Unicode.GetString(receivedBytes);
users[i] = new Thread(new ThreadStart(test));
users[i].Start();
i++;
}
}
public void test()
{
string login;
string pass;
string ip;
UdpClient logini = new UdpClient(1234);
while (true)
{
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
ip = RemoteIpEndPoint.Address.ToString();
Byte[] receivedBytes = logini.Receive(ref RemoteIpEndPoint);
login = Encoding.Unicode.GetString(receivedBytes);
break;
}
while (true)
{
IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 0);
Byte[] receivedBytes = logini.Receive(ref RemoteIpEndPoint);
pass = Encoding.Unicode.GetString(receivedBytes);
break;
}
MessageBox.Show(ip + "|" + login + "|" + pass);
}
[/code]
Mam tu otworzone dwie klasy UdpClient nasłuchujące na tym samym porcie. Jedna znajduje się w metodzie "tracking", a druga w metodzie "test". Obie te metody są "włączone" w wątkach (tracking w wątku tracker, a test w wątku/wątkach users). Myślałem, że mogą być dwa gniazda w różnych wątkach ustawione na takie same porty, ale wyskakuje mi wyjątek, że może być max. jedno gniazdo. Wie ktoś jak to rozwiązać? Być może jest to powiązane z moim pierwszym problemem.
Odpowiedzi: 0
Strona 0 / 0