高手请进 ( 积分: 20 )

  • 主题发起人 主题发起人 grayguygg
  • 开始时间 开始时间
G

grayguygg

Unregistered / Unconfirmed
GUEST, unregistred user!
//我想把字符串读进stream,然后发送,代码如下:
//使用的是idudpserver
//这样做主要是因为我发送的对象是文字和图形兼有
//发送
procedure TForm1.Button5Click(Sender: TObject);
var
s:string[2];
begin
s:='me';
instream.Position:=0;
instream.writeBuffer(s,sizeof(s));
instream.Position:=0;
server.SendBuffer('127.0.0.1',6660,instream,instream.Size);
end;
//接收端
s:string[2];
begin
adata.ReadBuffer(s,sizeof(s));
showmessage(s);
//这样的到的结果不是发送的‘me’
//怎么样才能正确的发送传送和接收stream呢
 
用什么控件发送和接收? 走tcp/ip协议吗?
 
procedure TForm1.Button5Click(Sender: TObject);
var
s:string[2];
begin
s:='me';
instream.Position:=0;
instream.writeBuffer(s[1],Length(s));
instream.Position:=0;
server.SendBuffer('127.0.0.1',6660,instream,instream.Size);
end;
//接收端
s:string[2];
begin
adata.ReadBuffer(s[1],Length(s));
showmessage(s);

一般来说,先发送字符串的长度,再发字符串过去,对方收到后先设置字符串的长度,再接受字符串数据
 
使用的是idudpserver
这样做主要是因为我发送的对象是文字和图形兼有
 
问题已经解决,是我在以前的贴子上搜来的。
这中方式用来发送图形,语音,图象,文件都可以。
现在整理出来, 大家共享。
//发送端
//instream,oustream是Tmemorystream全局变量。
procedure TForm1.Button5Click(Sender: TObject);
var
s:string[2];
sendsize:integer;
begin
s:='me';
instream.Position:=0;
instream.writeBuffer(s,sizeof(s));//当然这里也可以写其他的,比如图形
instream.Position:=0;
sendsize:=instream.Size;
server.SendBuffer('127.0.0.1',6660,instream.memory^,instream.Size);
instream.Clear;
end;
//接收端
procedure TForm1.clientUDPRead(Sender: TObject; AData: TStream;
ABinding: TIdSocketHandle);
var
str:tstringstream;
msg:string;
buffer:pointer;
ilength:integer;
s:string[2];
begin
outstream.LoadFromStream(adata);
outstream.ReadBuffer(s,sizeof(s));
edit2.Text:=s //读出
end;
 
多人接受答案了。
 
后退
顶部