Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Сети";
Текущий архив: 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
14-1105370530
Василий
2005-01-10 18:22
2005.02.06
Товарищи, а у вас есть сайт?


14-1106032609
Александр Иванов
2005-01-18 10:16
2005.02.06
В России опять праздники?


3-1105021150
denis24
2005-01-06 17:19
2005.02.06
Создание пустого *.mdb и линков на таблицы другой базы


14-1106040354
mac
2005-01-18 12:25
2005.02.06
векторная графика


1-1106472512
FFFFFFQE
2005-01-23 12:28
2005.02.06
Как через Form1.Components[i] получить размеры компонента





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский