Форум: "Сети";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
ВнизСоздание сокета без сетевой карты. Найти похожие ветки
← →
Новичек (2004-11-19 06:58) [0]Имеется такой код:
procedure TForm1.Button1Click(Sender: TObject);
var
MySocket: TClientSocket;
begin
MySocket := TClientSocket.Create(nil);
MySocket.Address := "127.0.0.1";
MySocket.Port := 1234;
MySocket.Open;
MySocket.Socket.SendText("Some text");
MySocket.Close;
FreeAndNil(MySocket);
end;
На компе сетевой карты нет.
Так вот в чем проблема: при ПОВТОРНОМ клике на Button1 система огорченно восклицает - "Can"t create new socket".
Не подскажут ли уважаемые Мастера, в чём тут загвоздка?
← →
VMcL © (2004-11-19 07:26) [1]>>Новичек (19.11.04 06:58)
Дай-ка я угадаю. Наверное в try/finally?
← →
Новичек (2004-11-19 07:57) [2]Обработка исключений - это, разумеется, хорошо. Но хотелось бы знать, почему второй раз сокет не может быть создан.
← →
Digitman © (2004-11-19 08:21) [3]
> Новичек
он у тебя и при первом клике вряд ли м.б. создан
попробуй-ка так
procedure TForm1.Button1Click(Sender: TObject);
var
MySocket: TClientSocket;
begin
MySocket := TClientSocket.Create(nil);
MySocket.ClientType := ctBlocking;
MySocket.Address := "127.0.0.1";
MySocket.Port := 1234;
MySocket.Open;
...
end;
и убедись
← →
Новичек (2004-11-21 14:27) [4]
> Digitman
Срабатывает при первом клике, при последующих - указанное выше сообщение системы. Пробовал переводить в ctBlocking - та же хрень :-(
← →
Мастер © (2004-11-21 16:02) [5]>Новичек (21.11.04 14:27)
Почитай про реализацию сокетов в Delphi. TClientSocket - событийно-ориентированный компонент и линейная работа с ним невозможна.procedure TForm1.Button1Click(Sender: TObject);
var
MySocket: TClientSocket;
begin
MySocket := TClientSocket.Create(nil);
MySocket.Address := "127.0.0.1";
MySocket.Port := 1234;
MySocket.Open;
MySocket.Socket.SendText("Some text");
MySocket.Close;
FreeAndNil(MySocket);
end;
Выделенный код нельзя использовать таким образом.
Используй события OnConnect и пр...
← →
Новичек © (2004-11-21 16:44) [6]
> Мастер
Дело в том, что до SendText дело не доходит.
Исключение возникает при попытке открыть сокет (MySocket.Open).
← →
Piter © (2004-11-21 17:46) [7]Новичек (19.11.04 6:58)
Так вот в чем проблема: при ПОВТОРНОМ клике на Button1 система огорченно восклицает - "Can"t create new socket".
ну а у меня этот код работает многократно. Че делать бум?
← →
Новичек © (2004-11-21 17:52) [8]
> Piter
На работе на моем компе есть сетевая карта, вышеприведенный код работает без проблем.
← →
Новичек © (2004-11-21 17:53) [9]
> Piter
Сетевая карта стоит?
← →
Piter © (2004-11-21 20:04) [10]Новичек © (21.11.04 17:53) [9]
лучше выполни такой код:procedure TForm1.Button1Click(Sender: TObject);
var
MySocket: TClientSocket;
begin
MySocket := TClientSocket.Create(nil);
MySocket.Address := "127.0.0.1";
MySocket.Port := 1234;
try
MySocket.Open;
except
ShowMessage("ЧИТАТЬ ПОСТЫ НУЖНО!");
end;
MySocket.Socket.SendText("Some text");
MySocket.Close;
FreeAndNil(MySocket);
end;
← →
Alex Konshin © (2004-11-21 23:41) [11]Установи MS loopback adapter.
← →
Новичек © (2004-11-22 20:56) [12]
> Alex Konshin
Спасибо, помогло.
Но все-таки непонятно - почему не работало?
← →
Alex Konshin © (2004-11-22 22:11) [13]Потому и не работало, что у тебя не было IP интерфейсов.
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2005.02.06;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.039 c