konto usunięte

Temat: Klient && Serwer

Witam,
Piszę soft do zdalnego zarządzania komputerem. Soft oparty na socketach, i jest tak kod serwera odpowiedzialny za wyświetlenie menu oraz przyjęcie połączenia od klienta mam:

public static void Main (string[] args)
{
Socket soc = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);

IPAddress ip = IPAddress.Parse("0.0.0.0");
IPEndPoint ep = new IPEndPoint(ip, 2000);
soc.Bind(ep);
soc.Listen(10);
Socket nsoc = soc.Accept();
NetworkStream nstrem = new NetworkStream(nsoc);
StreamWriter streamw = new StreamWriter(nstrem);
streamw.WriteLine("Co chcesz zrobić?");
streamw.WriteLine("1. Restart");
streamw.WriteLine("2. Wyłącz");
streamw.WriteLine("3. Wyloguj");
streamw.Close();
nstrem.Close();
}

Kod klienta który się podłącza i odbiera dane od serwera, również mam:

public static void Main (string[] args)
{
try{
int port = 2000;
String host = "192.168.1.100";
Socket soc = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
//Połączenie ze zdalnym hostem
soc.Connect(host, port);
if (soc.Connected)
{
Console.WriteLine("Połączono z: " + host);
NetworkStream stream = new NetworkStream(soc);
StreamReader sr = new StreamReader(stream);
Console.WriteLine(sr.ReadToEnd());
stream.Close();
sr.Close();
}else{
Console.WriteLine("Nie połączono ze zdalnym hostem");
}
}catch (SocketException se){
Console.WriteLine("Błąd : " + se.Message);
}
}
I mój problem polega na tym, jak przy pomocy klienta, wysłać do serwera co ma zrobić, a serwer odbierze to i wykona? Kombinuje, ale nie wiem jak się za to wziąć :(

konto usunięte

Temat: Klient && Serwer

Eee...no wysyłasz do serwera np. łańcuch "1" a serwer odbiera i wie jak to zinterpretować tj. zrestartować komputer.

W czym problem w faktycznym wysłaniu do serwera znaku/łańcucha "1"? Możesz oczywiście wymyślić sobie bardziej skomplikowany protokół i nim się posługiwać.

konto usunięte

Temat: Klient && Serwer

`Piotr Sowa edytował(a) ten post dnia 12.02.12 o godzinie 16:12

konto usunięte

Temat: Klient && Serwer

Już sobie poradziłem :)

Odbiór danych:

byte[] bytes = new byte[256];
int byteCount= nsoc.Receive(bytes,SocketFlags.None);
if(byteCount > 0)
{
Console.WriteLine(Encoding.UTF8.GetString(bytes));
}

Wysłanie danych

byte[] msg = Encoding.UTF8.GetBytes("To tylko test socketów");
int byteCount = soc.Send(msg,SocketFlags.None);
Console.WriteLine("Wysłano {0} bajtów",byteCount);


Dziękuję za pomoc :) Teraz jeszcze trzeba to jakoś ładnie ogarnąć, aby serwer odbierał cały czas polecenia od klientaPaweł Cyrklaf edytował(a) ten post dnia 03.02.12 o godzinie 23:40

Następna dyskusja:

WFC, WPF, i Baza SQl w Arch...




Wyślij zaproszenie do