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 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('[email protected]@[email protected]');

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:

ClientSocket1.Socket.SendText('Jakiś tekst'+#13+#10);

lub

ServerSocket1.Socket.SendText('Jakiś tekst'+#13+#10)

:)

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, botów: 0