Здравствуйте, у меня проблема. Подскажите где в коде ошибка ? Пишу программы Клиент - Сервер.
Клиент отсылает серверу данные(string) - всё нормально, сервер коректно их принимает. Сервер посылает данные клиенту - клиент как то некоректно их принимает.
Помогите пожалуйста ! Срочно !
Вот код:
Сервер:
| Код | program Serv;
{$APPTYPE CONSOLE}
uses Windows, Winsock2, SysUtils;
var WSA : TWsaData; OldSock, NewSock : TSocket; Server, NewServ : TSockaddrin; _OK : string[2] = 'OK'; _NO : string[5] = 'Error'; Len : Integer; DATA : string;
label Exit;
begin Write('Initializing Ws2_32.dll... '); if WSAStartup(MAKEWORD(2, 2), WSA) = 0 then Writeln(_OK) else begin Writeln(_NO); goto Exit; end;
Write('Creating socket... '); OldSock := socket(AF_INET, SOCK_STREAM, 0); if OldSock <> 0 then Writeln(_OK) else begin Writeln(_NO); goto Exit; end;
Server.sin_family := AF_INET; Server.sin_addr.S_addr := INADDR_ANY; Server.sin_port := htons(777); bind(OldSock, @Server, sizeof(TSockaddrin));
Writeln('Listening socket...'); listen(OldSock, 5);
Len := sizeof(TSockaddrin); NewSock := accept(OldSock, NewServ, Len);
Writeln; Writeln('Client connected');
DATA := 'Windows XP Professional Edition SP2'; send(NewSock, DATA, sizeof(DATA), 0);
{... Остальной код ...} {Выход} Exit: Readln; end.
|
Клиент:
| Код | program Client;
{$APPTYPE CONSOLE}
uses Windows, Winsock2, SysUtils;
var WSA : TWsaData; Sock : TSocket; Ser : Tsockaddrin; Res : String[150];
label Connect_;
begin
WSAStartup(MAKEWORD(2, 2), Wsa);
Sock := socket(AF_INET, SOCK_STREAM, 0); Ser.sin_family := AF_INET; Ser.sin_addr.s_addr := inet_addr('127.0.0.1'); Ser.sin_port := htons(777);
Connect_: if connect(Sock, @Ser, sizeof(Ser)) = (-1) then begin Sleep(7000); goto Connect_; end;
recv(Sock, Res, sizeof(Res), 0); Write(Res);
Readln; end.
|
|