Форум: "Сети";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
ВнизОшибка при отправке ServerSocket-ом ClientSocket-у Найти похожие ветки
← →
Дмитрий_05 (2005-11-23 19:39) [0]Создал Сервер и Клиент на основе компонентов ServerSocket/ClientSocket. Приотправке клиентом сообщения серверу
ClientSocket.Socket.SendText(Edit2.Text);
проблем нету, все отправляется... а вот при отправке сообщения сервером клиенту(или всем клиентам, точно не знаю)
ServerSocket.Socket.SendText(Edit1.Text);
возникает ошибка.. как правильно отправлять сообщения сервером?
← →
Digitman © (2005-11-24 10:17) [1]в произвольный момент времени сообщение i-му активному клиенту м.б. отправлено вызовом send-метода объекта ServerSocket.Socket.Connections[i]
в момент обработки событий OnClientRead/Write сообщение клиенту, с которым ассоциировано событие, м.б. отправлено вызовом send-метода объекта Socket, переданного вторым параметром в метод-обработчик текущего события
← →
user18 (2005-11-24 14:42) [2]сделал тоже самое, при отправке ClientSOcket.Socket.SendText(text) где text : string
все хорошо, но на сервере,во время обработки в OnClinetRead
Memo1.Lines.Insert(0,"::",Socket.ReceiveText); во время обратотки этой строки сервер вываливается с ошибкой Access valation at adress 000000 и т.д. Что делать:\\\
← →
Digitman © (2005-11-24 14:54) [3]
> user18 (24.11.05 14:42) [2]
> Что делать
вариантов немного :
1. Воспользоваться встроенным отладчиком.
2. Привести полный текст метода-обработчика, еще лучше - всего проекта.
3. Мылить веревку.
← →
user18 (2005-11-24 15:07) [4]3 вариант сразу отпадает :)
2:
Клиентprocedure TForm1.BitBtn1Click(Sender: TObject);
var
text : string;
begin
text := "v2.0.0.0";
ClientSocket1.Active:=true;
ClientSocket1.Host:= "localhost";
ClientSocket1.Port:=1025;
ClientSocket1.Socket.SendText(text) ;
end;
Серверprocedure TForm1.FormCreate(Sender: TObject);
begin
ServerSocket1.Port:=1025;
ServerSocket1.Active:=true;
end;
procedure TForm1.ServerSocket1Accept(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Insert(0,"Connected");
end;
procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
Socket: TCustomWinSocket);
begin
Memo1.Lines.Insert(0,:: "+Socket.ReceiveText)
end;
все идет хорошо, как доходит до ...ClientRead... выскакивает табличка с Access valation и т.д.
← →
Digitman © (2005-11-24 15:26) [5]
> Клиент procedure TForm1.BitBtn1Click(Sender: TObject);
> var
> text : string;
> begin
> text := "v2.0.0.0";
> ClientSocket1.Active:=true;
> ClientSocket1.Host:= "localhost";
> ClientSocket1.Port:=1025;
> ClientSocket1.Socket.SendText(text) ;
> end;
с какого перепугу-то - сначала активация, и только следом установка хоста-порта ?! ...
сначала установка хоста-порта, потом активация (успешная) и только затем - инф.обмен ..
а вариант №1 - ЛУЧШИЙ вариант ! в лшюбом случае лучший ...
← →
user18 (2005-11-24 15:45) [6]Windows socket error: A request to send or receive data was disallowed is not connected and no aress was supplied(10057)
Это в серере, в клиенте никаких ошибок во время отправки не возникает.
← →
user18 (2005-11-24 15:53) [7]я понимаю так,что сразу же после конекта клиента,сервер его отключает\клиет отключается ?
Сервер же должен скинуть в новый поток этого клиента или я чет не понимаю?
← →
Digitman © (2005-11-24 15:54) [8]ты вообще о чем - о передаче или о приеме сервером ?
судя по Дмитрий_05 (23.11.05 19:39) - о передаче, однако в user18 (24.11.05 15:07) [4] передачей и нее пахнет - там чистый прием
← →
user18 (2005-11-24 16:01) [9]ну да,о приеме, просто решил раз тема о сокетах, то тут и напишу, причем ситуации в ошибках приема\передачи не сильно то и различны.
← →
Digitman © (2005-11-24 16:07) [10]WSAENOTCONN (10057) = The socket is not connected
Этот отказ действительно возникает в ходе исполнения ф-ции winsock.recv() и вполне м.б. связан с разрывом ранее установленного коннекта на момент вызова ф-ции ... а кто явился инициатором разрыва - об этом история умалчивает)
← →
user18 (2005-11-24 16:10) [11]проверил след образом еще кое что.
к клиенте Host,Port,Active написал в OnCreate формы,а SendText поставил на ButtonClick/
Далее запустил сервер, после чего запустил клиент, сразу же после запуска клиента в Memo сревера появилась Connected и сервер выпал с ошибкой, т.е. до разравы соединения между коннектом и передачей данных дело не дошло :\\
Вывод : Сервер почему то не оставляет клиент подключенным,а вылетает в ошибкой
← →
Digitman © (2005-11-24 16:22) [12]приводи ПОЛНЫЙ код проекта клиента и сервера
Страницы: 1 вся ветка
Форум: "Сети";
Текущий архив: 2006.03.12;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c