Показать сообщение отдельно
  #5  
Старый 12.08.2009, 23:05
одинадцатый одинадцатый вне форума
Новичок
 
Регистрация: 16.04.2009
Сообщения: 95
Репутация: 10
По умолчанию

с помощью инди сделал такой вот пирог. проблема в след.:
товарищу дал обе проги, мы вводили ip друг друга. короче ему от меня доходили сообщения и от клиента и от сервера, а мне нет - ошибки 10060 и 10061. что делать?


сервер
Код:
unit Unit1;

interface

uses
  winsock,Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdTCPServer, StdCtrls,
  IdTCPConnection, IdTCPClient;

type
  TForm1 = class(TForm)
    IdTCPServer1: TIdTCPServer;
    Edit1: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    IdTCPClient1: TIdTCPClient;
    Button1: TButton;
    Edit3: TEdit;
    Label3: TLabel;
    Button2: TButton;
    Edit4: TEdit;
    Edit5: TEdit;
    procedure IdTCPServer1Exception(AThread: TIdPeerThread;
      AException: Exception);
    procedure FormCreate(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.IdTCPServer1Exception(AThread: TIdPeerThread;AException: Exception);
var s: string;
key, i :integer;
begin
key:=10;
with athread.Connection do
try
  try
  edit2.Text:=readln;
  //writeln(edit1.Text);
  except
  on e: exception do writeln(e.Message);
  end;
finally
disconnect;
end;

end;

procedure TForm1.FormCreate(Sender: TObject);
const WSVer = $101;
var
  wsaData: TWSAData;
  P: PHostEnt;
  Buf: array [0..127] of Char;
  result:string;
begin
  Result := '';
  if WSAStartup(WSVer, wsaData) = 0 then begin
    if GetHostName(@Buf, 128) = 0 then begin
      P := GetHostByName(@Buf);
      if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
    end;
    WSACleanup;
  end;
form1.Caption:='server   ip - ' + result;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
with idtcpclient1 do
  try
    connect;
    try
      writeln(edit1.Text);
      //edit2.Text:=readln;
    finally
      disconnect;
    end;
  except
    on e: exception do showmessage('ошибка соединения: ' + e.message);
    on e: exception do showmessage('ошибка: ' + e.Message);
    end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
idtcpclient1.host:=edit3.Text;
idtcpclient1.Port:=strtoint(edit5.Text);
idtcpserver1.DefaultPort:=strtoint(edit4.text);
end;

end.

клиент
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient,Winsock, IdTCPServer;

type
  TForm1 = class(TForm)
    IdTCPClient1: TIdTCPClient;
    Edit1: TEdit;
    Button1: TButton;
    Label1: TLabel;
    Label2: TLabel;
    Edit2: TEdit;
    IdTCPServer1: TIdTCPServer;
    Edit3: TEdit;
    Label3: TLabel;
    Button2: TButton;
    Edit4: TEdit;
    Edit5: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure IdTCPServer1Exception(AThread: TIdPeerThread;
      AException: Exception);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin

with idtcpclient1 do

  try
    connect;
    try
      writeln(edit1.Text);
      //edit2.Text:=readln;
    finally
      disconnect;
    end;
  except
    on e: exception do showmessage('ошибка соединения: ' + e.message);
    on e: exception do showmessage('ошибка: ' + e.Message);
    end;

end;

procedure TForm1.FormCreate(Sender: TObject);
const WSVer = $101;
var
  wsaData: TWSAData;
  P: PHostEnt;
  Buf: array [0..127] of Char;
  result:string;
begin
  Result := '';
  if WSAStartup(WSVer, wsaData) = 0 then begin
    if GetHostName(@Buf, 128) = 0 then begin
      P := GetHostByName(@Buf);
      if P <> nil then Result := iNet_ntoa(PInAddr(p^.h_addr_list^)^);
    end;
    WSACleanup;
  end;
form1.Caption:='client   ip - ' + result;
end;

procedure TForm1.IdTCPServer1Exception(AThread: TIdPeerThread;
  AException: Exception);
var s: string;
key, i :integer;
begin
key:=10;
with athread.Connection do
try
  try
  edit2.Text:=readln;
  //writeln(edit1.Text);
  except
  on e: exception do writeln(e.Message);
  end;
finally
disconnect;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
idtcpclient1.host:=edit3.Text;

idtcpclient1.Port:=strtoint(edit4.Text);
idtcpserver1.DefaultPort:=strtoint(edit5.text);
end;

end.
Ответить с цитированием