Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
ВнизПравильно ли работаю с массивом сокетов? Найти похожие ветки
← →
Новичоккк (2006-06-02 17:04) [0]Асинхронные сокеты. Вот код:
Socks: array of record
sock:TClientSocket;
msg:string;
answer:string;
end;
...
procedure TfrmMain.SockRead(Sender: TObject; Socket: TCustomWinSocket);
var
c:TClientSocket;
tag:integer;
str:string;
begin
c:=(Sender as TClientSocket);
tag:=c.Tag;
str:=Socket.ReceiveText;
if str="welcome" then socket.SendText(Socks[tag].msg) else
begin
Socks[tag].answer:=str;
c.Active:=false;
c.Close;
end;
end;
...
procedure TfrmMain.Action;
const
THREADS=5;
var
i:integer;
begin
SetLength(socks,THREADS);
for i:=0 to THREADS-1 do
begin
Socks[i].sock:=TClientSocket.Create(nil);
with Socks[i].sock do
begin
address:="127.0.0.1";
port:=13579;
clienttype:=ctNonBlocking;
tag:=i;
onRead:=SockRead;
end;
Socks[i].msg:="sock#"+IntToStr(i);
Socks[i].answer:="";
Socks[i].active:=true;
end;
end;
Первый раз пытаюсь написать сетевое приложение. Всё правильно?
← →
Piter © (2006-06-02 17:10) [1]Интересно... А почему в потрепаться? :))))
Предлагаю оставить только одну конференцию :))
← →
Новичоккк (2006-06-02 17:19) [2]Дело в том, что в другие (по крайней мере в "Сети"), почти никто не заглядывает
← →
StriderMan © (2006-06-02 17:30) [3]а разрушать кто будет сокеты после использования? либо разрушай явно при помощи .Free либо указывай .Create(Self), тока форма при закрытии их поубивает, но так при каждом выполнении Action будут новые сокеты плодиться
← →
Piter © (2006-06-02 18:38) [4]Новичоккк (02.06.06 17:19) [2]
Дело в том, что в другие (по крайней мере в "Сети"), почти никто не заглядывает
судя по количество ответа в ветках - ты не прав.
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2006.06.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c