Sockety

0

Napisałem program, który ma robić za nauczyciela :) i składa się z dwóch części: client i server... Chodzi o to, że client (na komputerze ucznia) wysyła informację do servera, a ten odpowiada mu wysyłając treść zadań. Następnie po rozwiązaniu przez ucznia zadań wysyła informacje o odpowiedziach serverowi... A właściwie chciałbym, żeby tak było... bo server nie odpowiada clientowi... Niby napisałem wszystko chyba jak trzeba, ale nic...
Mam w zasadzie dwa pytanka:

  1. Czy server musi wysłać jakąś konkretną informację do clienta, że może "wysłuchać" to, co on wyśle
  2. Czy na serverze po wykonaniu polecenia ServerSocket.Open i na kliencie ClientSocket.Open trzeba wykonać jakąś komendę, która dokończy proces łączenia?
    Z góry dzięki za odpowiedzi
    P.S. Nie wkleję tu źródeł programów, bo są za długie...
0

Jest jeden problem... Bo próbując wysłać kilka informacji pod rząd poleceniem [code] SendText(str); * str jest zmienną typu string [/code]i potem znowu to samo (po zmianie zmiennej str oczywiście) i tak kilka razy, a client odbiera to tak, jakbym wysłał to za jednym zamachem tzn jakbym zrobił tak: [code]SendText(str1+str2+str3+str4+...+strn) * strx - kolejne zmienne[/code]Czy może mi ktoś wyjaśnić, dlaczego tak się dzieje? W artykule, do którego link jest powyżej, nie ma wyjaśnienia takiego zachowania...

0

Hmm we wszystkich "popularnych socketo-programach" (typu prosiak etc.etc.) jest funkcja tnąca string na kawałki..

Wysyłasz np stringa

SendText('Czesc@Adam@Pilorz@Delphi');

potem dzielisz odebranego stringa na pdst @ i już masz 4 informacje przesłane za jednym razem..

0

Podejrzewam, że problem tkwi w tym, że nie wysyłasz znaku końca lini do klienta :)
Może spróbuj tak:
[code]
ClientSocket1.Socket.SendText('Jakiś tekst'+#13+#10);
[/code]
lub
[code]
ServerSocket1.Socket.SendText('Jakiś tekst'+#13+#10)
[/code]
:)

0

Adam, a spróbuj między kolejnymi SendText dać Sleep(10). Może klient odbiera dwie wiadomości i daje je do jednego receivetext, bo przychodzą jako jedna?

0

To nic nie da.
Lepiej dawać słowo (Word) z długością pakietu, wtedy pakiet bedzie mial forme:

|Dlugosc|Dane|Dlugosc|Dane| itd.
wtedy łatwo pociąć i nie trzeba rezygnować z jednego znaku.

1 użytkowników online, w tym zalogowanych: 0, gości: 1