Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.02.06;
Скачать: CL | DM;

Вниз

Создание сокета без сетевой карты.   Найти похожие ветки 

 
Новичек   (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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.031 c
1-1106221314
Dimedrol
2005-01-20 14:41
2005.02.06
Как записать XLS-файл ?


1-1106402346
kyn66
2005-01-22 16:59
2005.02.06
как найти дублирующиеся значения полей в таблице


14-1105993161
Piter
2005-01-17 23:19
2005.02.06
Расскажите подробно про авторизацию в ICQ


1-1106481392
SeregaMan
2005-01-23 14:56
2005.02.06
Видимость определенной колонки StringGrid-a


6-1101480819
User1
2004-11-26 17:53
2005.02.06
Помогите c конвертированием строки