一、登陆页面设计
界面采用delphi XE8自带控件,界面可按需求自行设计。连接服务器以接口命令格式加密发送,在返回的数据进行解密处理。发送前需要先获取本地IP和软件当前版本号,当版本不是最新的情况下进行更新到最新版本。
二、设计多服务器选择窗口。
多服务器的情况下,先判断当前连接的服务器中连接速度最快的服务器,并设定为连接对像。
三、定义服务器连接地址,并设定有效端口。
1、定义服务器IP及端口。
HYINFO_URL = 'http://heyue.com:8080/churu/heyue_moni.php'; {合约资料网址}
HOSTIP = '127.0.0.1';
NETWORK_PORT:array[0..4] of Integer = (9201,9202,9203,9204,9205);
NETWORK_PORT_BACKUP: array[0..4] of Integer = (9206,9207,9208,9209,9210);
NETWORK_PORT_MARKET: array[0..1] of Integer = (9200,9211);
NETWORK_PORT_QUERY = 9527;
ChuJinHttp=' ';
RuJinHttp=' ';
APPTITLE = '忠习财富实盘';
2、定义多服务器选择
procedure Tnetworkset.ManyIPAddress;
begin
FnetaddressList[0].no := 0;
FnetaddressList[0].name := '江西联通';
FnetaddressList[0].socket_port := random_port(NETWORK_PORT); {获取随机端口号}
FnetaddressList[0].socket_port_market := random_port(NETWORK_PORT_MARKET);
FnetaddressList[0].domain := 'http://127.0.0.1:'+VER_HTTPPOST;
FnetaddressList[0].yuming := 'http://127.0.0.1';
FnetaddressList[0].singledomain:='127.0.0.1';
FnetaddressList[0].ip := FnetaddressList[0].singledomain;
FnetaddressList[1].no := 1;
FnetaddressList[1].name := '湖南电信';
FnetaddressList[1].socket_port := random_port(NETWORK_PORT); {获取随机端口号}
FnetaddressList[1].socket_port_market := random_port(NETWORK_PORT_MARKET);
FnetaddressList[1].domain := 'http://127.0.0.2:'+VER_HTTPPOST;
FnetaddressList[1].yuming := 'http://127.0.0.2';
FnetaddressList[1].singledomain:='127.0.0.2';
FnetaddressList[1].ip := FnetaddressList[1].singledomain ;
end;
procedure Tnetworkset.OneIPAddress;
begin
FnetaddressList[0].no := 0;
FnetaddressList[0].name := '江西联通';
FnetaddressList[0].socket_port := random_port(NETWORK_PORT); {获取随机端口号}
FnetaddressList[0].socket_port_market := random_port(NETWORK_PORT_MARKET);
FnetaddressList[0].domain := 'http://' + HOSTIP + ':' + VER_HTTPPOST; //42.51.136.67
FnetaddressList[0].yuming := 'http://' + HOSTIP;
FnetaddressList[0].singledomain := HOSTIP;
FnetaddressList[0].ip := FnetaddressList[0].singledomain;
FnetaddressList[1].no := 1;
FnetaddressList[1].name := '湖南电信';
FnetaddressList[1].socket_port := random_port(NETWORK_PORT); {获取随机端口号}
FnetaddressList[1].socket_port_market := random_port(NETWORK_PORT_MARKET);
FnetaddressList[1].domain := 'http://' + HOSTIP + ':' + VER_HTTPPOST; //42.51.136.67
FnetaddressList[1].yuming := 'http://' + HOSTIP;
FnetaddressList[1].singledomain := HOSTIP;
FnetaddressList[1].ip := FnetaddressList[1].singledomain ;
四、用户登录
向服务器发送连接请求,连接时需要向服务器发送心跳包判断是否连接。
格式:
发送:10;编号;md5密码;IP地址;版本号;
返回:10;0;错误提示;
10;1;用户ID;姓名;随机码;策略启用标志;跟单数量;
账户余额;冻结金额;浮动盈亏;上次结算准备金;今日入金;今日出金;今日调整;今日划拨;今日货币转换;平仓盈亏;手续费;延期费;风险金;隔夜风险金;
。。。。。。。。。。
多币种循环
10;1用于后期数据判断使用
restr := '10' + ';' + VGUserInfo.bh + ';' + VGUserInfo.passwd + ';' +
VGUserInfo.local_ip + ';' + GetBuildInfo_Version + ';';
data_strstrea.WriteString(restr);
data_stream.LoadFromStream( data_strstrea );
FCMD_data.LoadFromStream( data_stream );
finally
data_stream.Free;
data_strstrea.Free;
end;
end;
{发送指令}
if FCMD_data.Size > 0 then
tcppark_sendbyte(FCMD_data);
{心跳包定时器启动}
Timer_heatpack.Enabled := True;
{重置重连次数和连接失败标志}
FRetryCount := 0;
IsConErr := False;
end;