
29.10.2009, 02:39
|
|
Участник форума
Регистрация: 22.11.2008
Сообщений: 142
С нами:
9193651
Репутация:
32
|
|
Особенности WinSock2
Вопрос первый:
Как правильней отправлять текст?
Вариант первый (Код на Delphi):
Код:
function SendText(Sock: TSocket; S: String): Integer;
begin
Result:=Send(Sock, PChar(S)^, Length(S), 0);
end;
Вариант второй (Код на Delphi):
Код:
function SendText(Sock: TSocket; S: String): Integer;
var
MainBuff: Array[0..1023] of Char;
iSize: Integer;
begin
Result:=0;
While (Length(S)>0) do
begin
iSize:=Length(S);
if (iSize>SizeOf(MainBuff)) then iSize:=SizeOf(MainBuff);
FillChar(MainBuff, SizeOf(MainBuff), 0);
CopyMemory(@MainBuff, PChar(S), iSize);
Delete(S, 1, iSize);
Result:=Result+Send(Sock, MainBuff, iSize, 0);
end;
end;
Вопрос второй:
Правильно ли я перевожу в неблокирующий режим?
Фрагмент кока (код на Delphi):
Код:
var
Sock: TSocket;
iMode: Cardinal;
....
begin
....
Sock:=Socket(AF_INET, SOCK_STREAM, 0);
if (Sock=INVALID_SOCKET) then Raise Exception.Create('Ошибка создания сокета');
if (Connect(Sock, @SockAddr, Sizeof(SockAddr))=0) then
begin
if NoneBlock then
begin
iMode:=1;
IOCtlSocket(Sock, FIONBIO, iMode);
end;
...
|
|
|