![]() |
Особенности WinSock2
Вопрос первый:
Как правильней отправлять текст? Вариант первый (Код на Delphi): Код:
function SendText(Sock: TSocket; S: String): Integer;Вариант второй (Код на Delphi): Код:
function SendText(Sock: TSocket; S: String): Integer;Вопрос второй: Правильно ли я перевожу в неблокирующий режим? Фрагмент кока (код на Delphi): Код:
var |
Вопрос 1:
Вариант Result:=Send(Sock, PChar(S)^, Length(S), 0); приемлем для строк относительно не большого размера. Чтобы люде не говорили, что данные не смогт сразу послаться итд итп. но это уже более низкий уровень будет думать. А от тебя данные уйдут в ядро и вернется значение сколько данных послан. Именно послано, а не дошло. Второй вариант - принципиально не правильный. Зачем копировать данные во временный буфер? Юзай указатели. т.е. это можно оформить примерно так: Код:
function SendText(Sock: TSocket; S: String): Integer;Второй вопрос. В принципе правильно. |
Цитата:
|
Цитата:
Проверил твою идею. Да указатели действительно облегчили жизнь. ЗЫ походу не BufLen а SendLen и ещё походу BufStart ты тут в конце указатель забыл :) |
А приёмку я осуществляю верно?
Код:
function ReceiveText(Sock: TSocket; var S: String): Integer; |
Код:
function SendText(Sock: TSocket; S: String): Integer;Код:
function ReceiveText(Sock: TSocket; var S: String): Integer; |
А приёмку как лучше и быстрее можно выполнить?
Кстати, я тут на днях от нехера делать DownLoader написал на чистых сокетах. Если я статеечку напишу с исходниками - это кому-то нужно или опять всё будут говорить Flenov, ты хернёй маешься? |
Цитата:
|
| Время: 14:06 |