Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Вниз

Сокеты "сдохли"   Найти похожие ветки 

 
Sergl   (2007-10-22 13:01) [0]

Запускаю сервер(button1). Запускаю клиент(button2). Когда нажимаю на кнопку button4 повляется ошибка: "Windows socket error: An invalid argument was supplied(10022), on API "closesocket" " Что случилось? Ведь еще вчера работало???

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, ScktComp, StdCtrls;

type
 TForm1 = class(TForm)
   ClientSocket1: TClientSocket;
   ServerSocket1: TServerSocket;
   Button1: TButton;
   Button2: TButton;
   Button3: TButton;
   Button4: TButton;
   Label1: TLabel;
   Label2: TLabel;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Button3Click(Sender: TObject);
   procedure Button4Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
serversocket1.Active:=false;
serversocket1.Port:=1111;
serversocket1.Active:=true;
label1.Caption:="Сервер запущен(порт:1111)";
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
clientsocket1.Active:=false;
clientsocket1.Port:=1111;
clientsocket1.Address:="127.0.0.1";
clientsocket1.Active:=true;
label2.caption:="Клиент запущен(127.0.0.1:1111)";
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
label1.Caption:="Сервер не запущен";
serversocket1.Active:=false;
end;

procedure TForm1.Button4Click(Sender: TObject);
begin
label2.Caption:="Клиент не запущен";
clientsocket1.Active:=false;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
label1.Caption:="Сервер не запущен";
label2.Caption:="Клиент не запущен";
end;

end.



 
Сергей М. ©   (2007-10-22 13:06) [1]


> Sergl   (22.10.07 13:01)


Какие обработчики каких событий сервера и клиента тобой используются при этом ?


 
Sergl   (2007-10-22 13:18) [2]


> Какие обработчики каких событий сервера и клиента тобой
> используются при этом ?


Я дал весь код... ни чего другого я не использую....
Делаю так:
1. нажал на button1: произошло соединение с сервером
2. нажал на button2: произошло подсоедининие клиента к серверу
3. нажимаю на button3: выдается ошибка: "Windows socket error: An invalid argument was supplied(10022), on API "closesocket" "


 
Sergl   (2007-10-22 13:22) [3]

Это код работал у меня еще вчера. Причем этот же код работает сейчас на другой машине!


 
Сергей М. ©   (2007-10-22 13:22) [4]

переведи clientsocket в режим ctBlocking и удивись.


 
Сергей М. ©   (2007-10-22 13:23) [5]


> нажимаю на кнопку button4 повляется ошибка


а теперь


> нажимаю на button3: выдается ошибка


Как это понимать ?


 
Sergl   (2007-10-22 13:25) [6]

Извеняюсь!!! Первый раз было правильно! Button4


 
Sergl   (2007-10-22 13:30) [7]


> Сергей М. ©   (22.10.07 13:22) [4]
> переведи clientsocket в режим ctBlocking и удивись.


Перевел... таже ошибка...


 
Сергей М. ©   (2007-10-22 13:36) [8]

Значит ты вводишь в заблуждение.

Строка

clientsocket1.Active:=false;

не может вызвать ошибку с кодом 10022


 
Sergl   (2007-10-22 13:40) [9]


> Значит ты вводишь в заблуждение.Строка clientsocket1.Active:
> =false;не может вызвать ошибку с кодом 10022


Я вот и сам ничего не понимаю.... работало же....

Вообще тестировалось приложение побольше: отправлялись файлы по сети и т.д. Все шло не плохо и в один момент при разрыве соединения с сервером начала появлятся Данная ошибка(триллер какой-то получается). Я написал код для проверки разрыва(который дал выше) и ошибка повторилась....

Может я своим приложением чего-то повредил???фунции API??? Сам понимаю что это бред какой-то!


 
Сергей М. ©   (2007-10-22 13:50) [10]

Хорошо.

Пробуй такой код:

procedure TForm1.Button1Click(Sender: TObject);
begin

serversocket1.Port :=1111;
serversocket1.Active:=true;
ShowMessage("Сервер успешно активирован");

clientsocket.Port := 1111;
clientsocket.Address := "127.0.0.1";
clientsocket.Open;
while not clientsocket.Active do Application.ProcessMessages;
ShowMessage("Клиент успешно подключился");

clientsocket.Close;
ShowMessage("Клиент успешно отключился");

serversocket1.Active:=False;
ShowMessage("Сервер успешно деактивирован");

end;


Какие сообщения видишь ?


 
Sergl   (2007-10-22 13:59) [11]


> Сергей М. ©   (22.10.07 13:50) [10]
> Хорошо.Пробуй такой код:procedure TForm1.Button1Click(Sender:
>  TObject);beginserversocket1.Port :=1111;serversocket1.Active:
> =true;ShowMessage("Сервер успешно активирован");clientsocket.
> Port := 1111;clientsocket.Address := "127.0.0.1";clientsocket.
> Open;while not clientsocket.Active do Application.ProcessMessages;
> ShowMessage("Клиент успешно подключился");clientsocket.Close;
> ShowMessage("Клиент успешно отключился");serversocket1.Active:
> =False;ShowMessage("Сервер успешно деактивирован");end;Какие
> сообщения видишь ?


Мне пожалуй нужно писать clientsocket1 а не clientsocket.

Вижу первые два сообщения и потом вылет с ошибкой...


 
Сергей М. ©   (2007-10-22 14:01) [12]


> потом вылет с ошибкой


С той же самой, т.е. 10022 при closesocket ?


 
Sergl   (2007-10-22 14:01) [13]

На другой машине все 4е вижу? ПАРАДОКС:)


 
Sergl   (2007-10-22 14:01) [14]


> Сергей М. ©   (22.10.07 14:01) [12]
> > потом вылет с ошибкойС той же самой, т.е. 10022 при closesocket
> ?

Да, с ней же...


 
Сергей М. ©   (2007-10-22 14:06) [15]

Попробуй снести в свойствах сет. окружения данное сетевое подключение и установить его заново


 
Sergl   (2007-10-22 14:14) [16]

Где его там в свойствах найти можно? Я вообщем в Касперском его разорвал, возникла ошибка 10053, затем нажимаю на кнопку button2(соединение установил) и после button4 - опять таже ошибка ...


 
Сергей М. ©   (2007-10-22 14:20) [17]


> Где его там в свойствах найти можно?


Не понял ...

Как же ты "отправлял файлы по сети", если не можешь найти ни одного сет.подключения в Окружении ?


> Я вообщем в Касперском его разорвал


Убирай нафих этого Кошмарского - он еще и не такую свинью может подложить.


 
Sergl   (2007-10-22 14:20) [18]


>  опять таже ошибка ...

в смысле 10022


 
Sergl   (2007-10-22 14:21) [19]


> Как же ты "отправлял файлы по сети", если не можешь найти
> ни одного сет.подключения в Окружении ?

тестировал на одном компе.


 
Sergl   (2007-10-22 14:23) [20]


> Убирай нафих этого Кошмарского - он еще и не такую свинью
> может подложить.


Убрал. Все попрежнему...


 
Сергей М. ©   (2007-10-22 14:24) [21]


> тестировал на одном компе


Даже если ты победишь эту ошибку, в "боевых" условиях твоя программа все равно работать как положено не будет.


 
Sergl   (2007-10-22 14:29) [22]


> Даже если ты победишь эту ошибку, в "боевых" условиях твоя
> программа все равно работать как положено не будет.


Но это ни суть важно, тот код который Вы давали(в 10м посту) он выдает ошибку на одной машине 10022, а на другой работает исправно...


 
Сергей М. ©   (2007-10-22 14:29) [23]


> Убрал.


Деинсталлировал ?


 
Sergl   (2007-10-22 14:34) [24]


> Деинсталлировал ?

Нет конечно)


 
Сергей М. ©   (2007-10-22 14:35) [25]


> Нет конечно)


Ну дык а что ж тогда хочешь ?)


 
Sergl   (2007-10-22 14:38) [26]


> > Убрал.

Деинсталлировал ?

Удалил - прога все также не работает %)


 
Sergl   (2007-10-22 14:39) [27]

Кстати: сообщение об ошибке(10022) появлется два раза подряд...


 
Сергей М. ©   (2007-10-22 15:11) [28]

А событие OnClientDisconnect при этом ?


 
Sergl   (2007-10-22 15:19) [29]


> А событие OnClientDisconnect при этом ?

Я в обработчик события OnClientDisconnect написал showmeesage("disconnect").Появилось один раз.


 
Сергей М. ©   (2007-10-22 15:24) [30]

А что говорит OnError на клиенте ?


 
Sergl   (2007-10-22 15:33) [31]


> А что говорит OnError на клиенте ?


Написал в процедуре TForm1.clientsocket1Error - showmessage(inttostr(ErrorCode));
Молчит.

Написал в процедуре TForm1.serversocket1clientError - showmessage(inttostr(ErrorCode));
Тоже молчит.


 
Сергей М. ©   (2007-10-22 15:35) [32]

Фигня какая-то ...

Ну хорошо, а что говорит по этому поводу telnet ?


 
Sergl   (2007-10-22 15:38) [33]

Это как проверить? Ни разу не пользовался...


 
Сергей М. ©   (2007-10-22 15:48) [34]

загружаешь telnet.exe (Пуск -> Выполнить ..)

Пишешь "open 127.0.0.1 1111"<ENTER>

Жмешь Ctrl+[

Пишешь "close"<ENTER>

Что наблюдаешь ?


 
Сергей М. ©   (2007-10-22 15:49) [35]


> Жмешь Ctrl+[


Ctrl+]


 
Sergl   (2007-10-22 16:05) [36]

Спасибо. Ухожу домой, надеюсь завтра продолжим.


 
Sergl   (2007-10-23 08:45) [37]

Вообщем проблема решилась точкой отката в windows:)(после чего ошибка 10022 перестала появлятся) забавно... я кажется своей прогой повредил системную инфу)


 
Сергей М. ©   (2007-10-23 10:46) [38]


> я кажется своей прогой повредил системную инфу


Может и ты ... А может и Кошмарский)



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2007.11.18;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.54 MB
Время: 0.056 c
15-1192363869
Sergey Masloff
2007-10-14 16:11
2007.11.18
Тупой вопрос про Northwind


15-1190725346
Piter
2007-09-25 17:02
2007.11.18
Синхронизация в PHP, многопоточность


2-1193145393
Sergey2
2007-10-23 17:16
2007.11.18
не показывается popupmenu


4-1178966232
KioLie
2007-05-12 14:37
2007.11.18
Кнопка приложения в taskbar е


2-1193214133
Alex8
2007-10-24 12:22
2007.11.18
TDBLookupComboBox





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