由于s:=ClientSocket.Receiveln;是接受字符串的,对方发过来的是流,请问用ClientSocket.ReceiveBuf()怎么显示的,如何使用,详细点!谢谢
解决方案 »
- 大虾们一定要帮帮小弟啊~~~~ 一个DBgrid的常规问题
- 关于拼音码中的数字与英文
- Delphi如何用使用dbExpress方式连接mysql,access,vfp6.0三种数据库呢?
- 请问一个动态生成dbgrideh的问题(关于footer)?
- 为什么经常出现远程过程调用失败,我是用DCOM开发的多层结构。。。
- 测试用ewf做的系统!
- [***SOS***]:FASTREPORT中为何不能进入报表设计状态?
- 怎样创建windows 2000 系统用户
- ISAPI 过滤器遇到的未知问题,真是晕死人。
- 做边锋双扣算牌器,需要技术支持 100分求教
- 提示缺少这个文件uWriteIcon.dcu
- 公司给的给芯片烧录Flash的软件,在笔记本上打开时出现Access violation at address....
可能不是你要的结果,但自己可以根据此思路改成合适的,道理都是一样{f是内存流全局变量}
var
f:TMemoryStream;{接收,并显示内存在Memo1中}
procedure TForm1.TcpServer1Accept(Sender: TObject;
ClientSocket: TCustomIpClient);
begin
ClientSocket.ReceiveBuf(f,Sizeof(f));
Memo1.Lines.LoadFromStream(f);
end;{内存流读入数据,并发送}
procedure TForm1.Button2Click(Sender: TObject);
begin
f.LoadFromFile('D:\1.xml');
TcpClient1.SendBuf(f,Sizeof(f));
end;{打开Socket}
procedure TForm1.Button1Click(Sender: TObject);
begin
TcpServer1.Active:=True;
TcpClient1.Active:=True;
end;{创建内存流}
procedure TForm1.FormCreate(Sender: TObject);
begin
f:=TMemoryStream.Create;
end;{关闭Socket和释放内存流}
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
TcpClient1.Active:=False;
TcpServer1.Active:=False;
f.Free;
end;
或Memo1.Lines.SaveToFile('d:\2.xml');
一协议:通过SOCKET通信:在DELPHI6下接受通过解码可以显示,接口方配合不当,一时发送老是报错,
采用TCP长连接,每个消息包含:1、二进制包头;2、包内容(xml格式)。
HeardFlag(int) Length(int) Sequence Ver Enc Rec
4 4 4 1 1 2
HeardFlag: 协议标识,固定为KSF$,4个字节。
Length: 消息长度,包头和包内容xml体的总长度,4个字节。
Sequence: 消息序号,4个字节。
Ver: 协议版本,1个字节,当前版本序号1。
Enc: 是否加密,1个字节,当前版本不加密0。
Rec: 保留字段,2个字节。
请教如何发送,如何把10进制的包头+XML内容长度放在4字节里显示,曾做10-16进制转换等都不对,可能理解错误,高手指点下如何转换,发送!在线等立马散分