Форум: "Сети";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];
ВнизНууу... вопрос по сокетам <совсем маленький> Найти похожие ветки
← →
Velocity (2002-01-07 11:03) [0]Итак, кусочек кода гляньте... Простой такой сервер.
program Console_server;
{$APPTYPE CONSOLE}
uses
Windows, Winsock;
const
nport:smallint = 500;
var
WSAData:TWSAData;
MySockAddr:sockaddr_in;
srvsocket,descriptor:TSocket;
dlina,rcvd_bytes:integer;
buffer:array [0..255] of Char;
res:cardinal;
procedure InitializeSocket;
begin
buffer:=#0;
res:=WSAStartup($0101,WSAData);
if res<>0 then Halt;
MySockAddr.sin_addr.S_addr:=INADDR_ANY;
MySockAddr.sin_port:=htons(nport);
MySockAddr.sin_family:=AF_INET;
descriptor:=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP);
if descriptor=INVALID_SOCKET then Halt;
dlina:=SizeOf(MySockAddr);
res:=bind(descriptor,MySockAddr,dlina);
if res<>0 then Halt;
res:=listen(descriptor,SOMAXCONN);
if res<>0 then Halt;
end;
procedure ReleaseSocket;//это на будущее - грамотно закрыть...
begin
closesocket(srvsocket);
closesocket(descriptor);
WSACleanUp;
end;
begin
InitializeSocket;
while true do begin
srvsocket:=accept(descriptor,nil,nil);
if srvsocket=INVALID_SOCKET then Halt;
rcvd_bytes:=recv(srvsocket,buffer,Length(buffer),MSG_PEEK);
MessageBox(0,buffer,"title",MB_OK);
end;
end.
команда:
rcvd_bytes:=recv(srvsocket,buffer,Length(buffer),MSG_PEEK);
далее, посылаю куда положено строку. данные в буфер я получаю один раз, т.е. первый раз мессага вываливается - любо-дорого. вот как теперь сокет сервера (именно уже соединенный) снова настроить на прием данных? какой командой? помогите плиз.
← →
samuray (2002-01-07 12:12) [1]Ха , у меня была такая проблема , фишка в том что нужно все данные принять а то второй раз уже ничего не примеш , сокет будет ждать чтоб все данные были приняты!
для этого вставь такую строку
ioctlsocket(srvsocket, FIONREAD, PackLen);
GetMem(Buff, PackLen);
PackRec := recv(srvsocket, Buff^, PackLen, 0);
Res := Buff; //здесь то что принял!!
где
PackLen : Cardinal;
PackRec : Integer;
Buff : PChar;
Res : string;
← →
Velocity (2002-01-09 13:57) [2]Очень большое спасибо.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2002.03.25;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.004 c