
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.
|