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

Вниз

Socket   Найти похожие ветки 

 
B@rm@ley   (2006-11-22 17:25) [0]

мне нужно написать программу для обмена сообщений, для этого я выбрал компоненты ClientSocket, ServerSoсket.
Вот мой исходный текст, проблема в том что сообщения не приходят. процедура TForm1.ServerSocket1ClientRead(Sender: TObject; Socket: TCustomWinSocket); не выполнятся.

unit Unit1;

interface

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

type
 TForm1 = class(TForm)
   ClientSocket1: TClientSocket;
   ServerSocket1: TServerSocket;
   Button1: TButton;
   Edit1: TEdit;
   OnlineIP1: TOnlineIP;
   Button2: TButton;
   Edit2: TEdit;
   procedure FormCreate(Sender: TObject);
   procedure Button1Click(Sender: TObject);
   procedure ServerSocket1ClientRead(Sender: TObject;
     Socket: TCustomWinSocket);
   procedure Button2Click(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}
///////////
procedure SendMes(Text: String);
Var
i: byte;
begin
with Form1.ServerSocket1.Socket do begin
if ActiveConnections>0 then
for i:=0 to ActiveConnections-1 do
Try
Connections[i].SendText(Text);
Application.ProcessMessages;
Except
//
end;
end; {/WITH}

end;

///////////
procedure TForm1.FormCreate(Sender: TObject);
begin
 Form1.ClientSocket1.Active:=true;
 Form1.ServerSocket1.Active:=true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
 SendMes(Form1.Edit1.Text);
end;

procedure TForm1.ServerSocket1ClientRead(Sender: TObject;
 Socket: TCustomWinSocket);
var
Str: string;
RemIP: string;
begin
RemIP:=Socket.RemoteAddress;
str:=socket.ReceiveText;
/////////
//вывод сообщения и ip отправителя
ShowMessage(str);
ShowMessage(RemIP);
end;

end.


 
Dmitrij_K   (2006-11-22 19:00) [1]


> Вот мой исходный текст, проблема в том что сообщения не
> приходят. процедура TForm1.ServerSocket1ClientRead(Sender:
>  TObject; Socket: TCustomWinSocket); не выполнятся.

Судя по коду, ты ничего не отправляешь серверу


 
Орион ©   (2006-11-22 19:06) [2]

мой внутренний голос подсказывает, что проблема вот здесь:


Form1.ClientSocket1.Active:=true;
Form1.ServerSocket1.Active:=true;


попробуй местами строчки поменять.


 
Орион ©   (2006-11-22 19:07) [3]

ЗЫ: и событие OnError не просто так в списке значится.


 
Орион ©   (2006-11-22 19:20) [4]

а, ну да.
Как всегда, все намного проще :)
В [1] ответ, но строчки все таки поменяй ;)


 
Warstone ©   (2006-11-23 14:18) [5]

А у меня вопрос, а зачем тебе ClientSocket если ты им не пользуешься? То есть ты связываешь клиент и сервер, через сервер К КЛИЕНТАМ посылаешь сообщение(Form1.ServerSocket1) и хочешь чтоб этот-же сервер тебе ответил? (TForm1.ServerSocket1ClientRead) Жди.
На самом деле надо событие обрабатывать для клиетнского сокета. Но сама программа говорит о полном непонимании работы сети. Ты заранее знаешь с кем связываться будешь? Если нет, то где ввод ИПа удаленного сервера? Далее, если клиент подключился, то чтоб он мог тебе отправить сообщения надо создать ещё 1 ClientSocket и подключиться им к ServerSocket удаленной машины... вобщем криво это всё. Можно сказать читайте RTFM.


 
B@rm@ley   (2006-11-23 17:28) [6]

Все проще. Сокет перед отпракой сообщения надо открыть. А IP я знаю и он вводиться в Edit5, просто не весь код написал. А сработай в сетях я только начал знакомиться.

//кнопка отправить
procedure TForm1.Button1Click(Sender: TObject);
begin
 ForSend:=Form1.Edit1.Text;
 Form1.ClientSocket1.Close;
 Form1.ClientSocket1.Address:=Form1.Edit5.Text;
 Form1.ClientSocket1.Open;
end;

//
procedure TForm1.FormCreate(Sender: TObject);
begin
 ServerSocket1.Open;
end;

// и когда сокет открыт выполняетя функция
procedure TForm1.ClientSocket1Connect(Sender: TObject;
 Socket: TCustomWinSocket);
begin
 socket.SendText(ForSend);
 ForSend:="";
end;


 
Dmitrij_K   (2006-11-23 23:23) [7]

Вместо ClientSocket1Connect лучше OnWrite



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

Текущий архив: 2007.06.03;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.102 c
1-1176118886
oxffff
2007-04-09 15:41
2007.06.03
Очередные баги компилятора.


2-1179294391
Руслан56
2007-05-16 09:46
2007.06.03
*dbf


2-1179122720
Шакал
2007-05-14 10:05
2007.06.03
Сортировка по дате


15-1178615955
Jan1
2007-05-08 13:19
2007.06.03
Защита программы от крэка


2-1179219374
leshas0
2007-05-15 12:56
2007.06.03
функция - вернуть массив