Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.03.25;
Скачать: CL | DM;

Вниз

Нууу... вопрос по сокетам <совсем маленький>   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.011 c
1-80591
AL Greko
2002-03-09 15:41
2002.03.25
CAD Library


3-80444
Esipenko
2002-02-25 12:41
2002.03.25
описание halcyon


1-80519
Rail
2002-03-13 07:28
2002.03.25
QReport ГЛЮЧИТ !!!


14-80691
Zerul
2002-02-10 00:50
2002.03.25
*.iso - hto uto takoe i shem ego edyt?


14-80673
.: Joiro :.
2002-02-10 23:42
2002.03.25
Продолжаем/дополняем тему о фильмах: Какой фильм Вы больше всего ждёте?