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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.042 c
2-1179071022
Kostafey
2007-05-13 19:43
2007.06.03
SQL Query Analyzer vs ADO: различия в интерпритации даты


15-1178196954
pavel_guzhanov
2007-05-03 16:55
2007.06.03
Мышка из нержавейки


8-1159108278
_SuN_
2006-09-24 18:31
2007.06.03
Рисование на рабочем столе


15-1178092102
Alkid
2007-05-02 11:48
2007.06.03
Появилось стойкое желание...


4-1166975309
XeRoN
2006-12-24 18:48
2007.06.03
Hook





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