Показать сообщение отдельно

Особенности WinSock2
  #1  
Старый 29.10.2009, 02:39
Flenov
Участник форума
Регистрация: 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;
...
 
Ответить с цитированием