在窗体上放入两个Image组件,分别作为发送和接收的图像.
放入IdTcpClient和IdTcpServer组件,定义IdTCPClient的Host:127.0.0.1,Port:9080; IdTCPServer的Port:90801 发送图片按钮的代码如下:var
Temp:TMemoryStream;
begin
Temp:=TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(Temp);
IdTCPClient1.Connect();
IDTCPClient1.WriteStream(Temp);
IDTCPClient1.Disconnect();
Temp.Free;end;2 IdTCPServer的OnExecute方法中写入:const
TempImageFile='F:\haohao.jpg';
var
t:TMemorystream;
begin
t:=TMemorystream.create;
AThread.Connection.ReadStream(t,-1,True);
t.saveToFile(TempImageFile);
Image2.Picture.LoadFromFile(TempImageFile);
t.Free;
end;但我在编译时,一点发送就出错:
'Socket Error # 10061 Connection refused'
放入IdTcpClient和IdTcpServer组件,定义IdTCPClient的Host:127.0.0.1,Port:9080; IdTCPServer的Port:90801 发送图片按钮的代码如下:var
Temp:TMemoryStream;
begin
Temp:=TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(Temp);
IdTCPClient1.Connect();
IDTCPClient1.WriteStream(Temp);
IDTCPClient1.Disconnect();
Temp.Free;end;2 IdTCPServer的OnExecute方法中写入:const
TempImageFile='F:\haohao.jpg';
var
t:TMemorystream;
begin
t:=TMemorystream.create;
AThread.Connection.ReadStream(t,-1,True);
t.saveToFile(TempImageFile);
Image2.Picture.LoadFromFile(TempImageFile);
t.Free;
end;但我在编译时,一点发送就出错:
'Socket Error # 10061 Connection refused'
Temp:TMemoryStream;
begin
Temp:=TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(Temp);
IdTCPClient1.Connect();
IdTCPClient1.OpenWriteBuffer;
IDTCPClient1.WriteStream(Temp);
IdTCPClient1.CloseWriteBuffer;
IDTCPClient1.Disconnect();
Temp.Free;end;2 IdTCPServer的OnExecute方法中写入:const
TempImageFile='F:\haohao.jpg';
var
t:TMemorystream;
begin
t:=TMemorystream.create;
AThread.Connection.ReadStream(t,-1,True);
t.saveToFile(TempImageFile);
Image2.Picture.LoadFromFile(TempImageFile);
t.Free;
end;
'Socket Error # 10061 Connection refused'请问:
IdTcpClient和IdTCPServer的设置有关系吗?我是这样设置的:IdTCPClient: Host:127.0.0.1,Port:9080;
IdTCPServer: Bindings的IP Address:127.0.0.1 ,Port:9080 ,(还有IP Address: All Port :Any都试过了不行),DefaultPort:9080试过也不行,请问这是哪的原因呢?
只是IdTCPUserver的 Port没设置好,不是代码的问题但与此相似的还有另一个问题:
就是在同一窗体内发送文本的程序:
窗口中的组件如下:"Edit","Memo","Bitbtn","IDUDPClient","IDUDPServer"
具体操作:
1、Bitbtn按钮:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
IdUDPClient1.Send(Edit1.Text);
end;2、IDUDPServer组件的 OnUDPRead中代码如下:procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
TempStream:TstringStream;
begin
TempStream:=TstringStream.Create('');
TempStream.CopyFrom(AData,Adata.Size);
Memo1.Lines.Add(TempStream.DataString);end;但运行后出错:
type
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);//这行出错,提示错误:
Undeclared identifier:'TIdSocketHandle'
不知什么原因?
窗口中的组件如下:"Edit","Memo","Bitbtn","IDUDPClient","IDUDPServer"具体代码:
1、Bitbtn按钮:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
IdUDPClient1.Send(Edit1.Text);
end;2、IDUDPServer组件的 OnUDPRead中代码如下:procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
TempStream:TstringStream;
begin
TempStream:=TstringStream.Create('');
TempStream.CopyFrom(AData,Adata.Size);
Memo1.Lines.Add(TempStream.DataString);end;_______________________但运行后出错:
type //类型定义部分出错
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);//这行出错,提示错误:
Undeclared identifier:'TIdSocketHandle'
不知什么原因?
type //类型定义部分出错
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);//这行出错,提示错误:
Undeclared identifier:'TIdSocketHandle'
不知什么原因?各位朋友帮帮忙,小弟感谢
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, IdTCPServer, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, ExtDlgs, jpeg;type
TForm1 = class(TForm)
OpenPictureDialog1: TOpenPictureDialog;
IdTCPClient1: TIdTCPClient;
IdTCPServer1: TIdTCPServer;
Image1: TImage;
Image2: TImage;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure IdTCPServer1Execute(AThread: TIdPeerThread);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
begin
with IdTCPServer1,Bindings do
begin
Clear;
Add.Port:=9080;
Active:=True;
end;
With IdTCPClient1 do
begin
Host:='127.0.0.1';
Port:=9080;
end;
end;procedure TForm1.Button1Click(Sender: TObject);
var
Temp:TMemoryStream;
begin
if OpenPictureDialog1.Execute then
begin
Image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Temp:=TMemoryStream.Create;
Image1.Picture.Graphic.SaveToStream(Temp);
IdTCPClient1.Connect;
IDTCPClient1.WriteStream(Temp);
IDTCPClient1.Disconnect;
Temp.Free;
end;
end;procedure TForm1.IdTCPServer1Execute(AThread: TIdPeerThread);
const
TempImageFile='c:\haohao.jpg';
var
t:TMemorystream;
begin
t:=TMemorystream.create;
AThread.Connection.ReadStream(t,-1,True);
t.saveToFile(TempImageFile);
Image2.Picture.LoadFromFile(TempImageFile);
t.Free;
end;
end.
只是IdTCPUserver的 Port没设置好,不是代码的问题但与此相似的还有另一个问题:
就是在同一窗体内发送字符串的程序:
窗口中的组件如下:"Edit","Memo","Bitbtn","IDUDPClient","IDUDPServer"
具体操作:
1、Bitbtn按钮:
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
IdUDPClient1.Send(Edit1.Text);
end;2、IDUDPServer组件的 OnUDPRead中代码如下:procedure TForm1.IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
TempStream:TstringStream;
begin
TempStream:=TstringStream.Create('');
TempStream.CopyFrom(AData,Adata.Size);
Memo1.Lines.Add(TempStream.DataString);end;但运行后出错:
type
procedure IdUDPServer1UDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);//这行出错,提示错误:
Undeclared identifier:'TIdSocketHandle'
不知什么原因?