Главная страница
    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.035 c
14-1105719572
Kerk
2005-01-14 19:19
2005.02.06
Мне необходим инет


3-1105122869
6op9I
2005-01-07 21:34
2005.02.06
Имена баз, режим конструктора таблицы, визуальное создание связей


1-1106487957
MakedoneZ
2005-01-23 16:45
2005.02.06
Почему в Delhpi классы начинаются на "T",например <b>TImage,TStri


1-1106318220
Eraser
2005-01-21 17:37
2005.02.06
TJvRichEdit и распознавание смайликов.


6-1100972208
webmaster
2004-11-20 20:36
2005.02.06
Отпрака мыла через proxy сервер





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский