Проблема в том, что сервер не принимает данные от клиента. Это при том, что клиент пишет, что данные отправлены.
Сервер пишет Listen - OK и данные не принимает.
Подскажите, что не так.
IP сервера: 172.23.170.74
IP клиента: 172.23.173.74
Компилятор FPC 2.2.2
Сервер
- Код: Выделить всё
Program Sockets_;
Uses Crt,Sockets;
Var Sock,Sock_new : LongInt;
SAddr : TInetSockAddr;
buf : ^Word;
Key_ : Boolean;
SAddrLength : LongWord;
Begin
ClrScr;
Sock:=fpsocket(AF_INET,SOCK_STREAM,0);
If (Sock = -1) then begin
Writeln('Socket Error');
ReadLn;
Halt;
end
else writeln ('Socket created - OK');
SAddr.sin_family:=AF_INET;
SAddr.sin_Port:=htons(50000);
SAddr.sin_addr:=StrToNetAddr('172.23.170.74');
If (fpbind(Sock,@SAddr,SizeOf(SAddr)) = -1) then begin
Writeln('Bind Error ',SocketError,' press Enter');
ReadLn;
Halt;
end
else writeln ('Bind - OK');
If (fplisten(Sock,1) = -1) then begin
Writeln('Listen Error, press Enter');
ReadLn;
Halt;
end
else writeln ('Listen - OK');
Key_:=True;
New(buf);
While Key_ do begin //Программа выполняет цикл, но данные не читает.
Sock_new:=fpaccept(Sock,@SAddr,@SAddrLength);
If (Sock_new >= 0) then writeln ('New socket - OK');
If (fprecv(Sock_new,@buf,SizeOf(Word),0)>=0) then begin
WriteLn(buf^);
Dispose(buf);
Key_:=False;
end;
Delay(1);
end;
If (Shutdown(Sock_new,2) = 0) then begin
WriteLn('Socket closed, press Enter.');
ReadLn;
Halt;
end;
End.
Клиент
- Код: Выделить всё
Program Sockets_;
Uses Crt,Sockets;
Var Sock,Sock_new : LongInt;
SAddr : TInetSockAddr;
buf : ^Word;
Key_ : Boolean;
SAddrLength : LongWord;
Begin
ClrScr;
Sock:=fpsocket(AF_INET,SOCK_STREAM,0);
If (Sock = -1) then begin
Writeln('Socket Error');
ReadLn;
Halt;
end
else writeln ('Socket created - OK');
SAddr.sin_family:=AF_INET;
SAddr.sin_Port:=htons(50000);
SAddr.sin_addr:=StrToNetAddr('172.23.170.74');
Key_:=True;
New(buf);
buf^:=26;
While Key_ do begin
If (fpconnect(Sock,@SAddr,SizeOf(SAddr)) <> -1) then
begin
WriteLn('Connect - OK');
If (fpsend(Sock,@buf,SizeOf(Word),0)>=0) then begin
WriteLn('Send - OK');
Dispose(buf);
Key_:=False;
end;
end;
Delay(1);
end;
If (Shutdown(Sock,2) = 0) then begin
WriteLn('Socket closed, press Enter.');
ReadLn;
Halt;
end;
End.