UDP编程求助(121分)

  • 主题发起人 主题发起人 cc007sy
  • 开始时间 开始时间
C

cc007sy

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟初学DELPHI,现要用UDP编一个客户端,就是在客户端开一个端口接受server端的数据,不用发送数据到server端,server端发送过来的数据是这样的,/*报文头[36]*/,
typedef struct
{
char TXN_CODE[7]; /*交易码*/
char RET_CODE[4]; /*返回码*/
char REC_NUM[4]; /*记录数*/
char TXN_TYPE[1]; /*操作类型*/
char TXN_DATE[8]; /*交易日期*/
char TXN_BNCH[4]; /*行所号*/
char TXN_TLR[4]; /*操作柜员*/
char TXN_TERM[4]; /*逻辑终端号*/
} COM_HEAD;
其中每次发过来的记录数有28条
每条内容如下
/*报价[52]*/
typedef struct
{
char CCY1[3];
char CCY2[3];
char MID_RATE[9];
char EXC_BUY_RATE[9];
char EXC_SELL_RATE[9];
char CASH_BUY_RATE[9];
char CASH_SELL_RATE[9];
char CTRL_FLAG[1]; /*控制标志*/
} REC_RATE;
希望哪位达人能提供类似源程,万分感谢,cc007sy@163.com
 
用tnmudp,以数据流的方式来发,很简单的。试一下就知道了。
 
汗的,我是新手,能不能提供一些具体点的源程呢,万分感谢
 
应该不够位吧,udp的数据传输有限制的哦,一次恐怕不行
 
type
Com_Head = record
TXN_CODE :array[0..7] of Char;
......
end;

Rec_Rate = record
CCY1 :array[0..3] of Char;
......
end;

发送
procedure SendData();
var
Mem :TMemoryStream;
begin
数据写入Mem
Nmudp.SendStream(Mem,Mem.Size);//可能不是这两个参数
end;

接收
Nmudp.Recieve();
begin

end;
 
这是我的胡言乱语,如果要想更深入处理或有问题,可以给我发邮件Q82s11c21@163.com
 
仙剑奇侠,思路是争取的呀。我也是这么封装数据的。
 
UDP协议限制了一次发送数据的长度(大约500多个字节),所以Server端的一帧数据是分多个包发过来的,你需要进行保证同步,同时进行组帧的操作,将每次接收的内容添加到一个全局的内存块中,当累计接收的信息达到一帧的长度时你就可以将整个帧取出来进行相关的处理。
 
我已经给楼主发邮件了,请查收
 
我只用负责接收端的处理,也就是说只要开一个端口然后侦听那个端口就可以了,至于发送端,那位达人说已经搞定了可以一次发送整个包过来,可是小弟看DELPHI才几天,所知实在有限,比如我用的是DELPHI7.0,里面关于UDP的控件只有UDPSOCKET,TIdUDPClient,和TIdUDPServer,我不知该用那个,然后数据传送到我的端口之后我是应该直接去读内存呢还是怎样?之后的数据应该怎么处理也一直困扰着我,不知该用什么控件处理,希望各位达人指点,最后能提供些此方面的源程让我学习,万分感激!!!
 
接受答案了.
 
后退
顶部