socket通信 急 需帮忙 ( 积分: 100 )

  • 主题发起人 主题发起人 zylsoft
  • 开始时间 开始时间
Z

zylsoft

Unregistered / Unconfirmed
GUEST, unregistred user!
服务端是他人VC开发,需要登陆后进行通信,手册说:首先应用通过SOCKET与平台建立TCP层连接,然后应用向平台发送连接请求包(CTKP_CONNECT),消息携带应用名和密码。平台对应用进行身份验证后向应用返回(CTKP_CONNECT_RSP),其中的状态值为0表示验证通过,否则状态值为相应的错误值。
消息头格式
字段名 字节数 类型 描述
Total_Length 4 Integer 消息总长度(消息头、体及小包)
Command_ID 4 Integer 命令或响应类型
Sequence_ID 4 Integer 消息流水号
Status 4 Integer 命令执行状态
客户段(delphi)怎么做才能正常链接,并接收平台返回消息!进行通信!

急救!
 
服务端是他人VC开发,需要登陆后进行通信,手册说:首先应用通过SOCKET与平台建立TCP层连接,然后应用向平台发送连接请求包(CTKP_CONNECT),消息携带应用名和密码。平台对应用进行身份验证后向应用返回(CTKP_CONNECT_RSP),其中的状态值为0表示验证通过,否则状态值为相应的错误值。
消息头格式
字段名 字节数 类型 描述
Total_Length 4 Integer 消息总长度(消息头、体及小包)
Command_ID 4 Integer 命令或响应类型
Sequence_ID 4 Integer 消息流水号
Status 4 Integer 命令执行状态
客户段(delphi)怎么做才能正常链接,并接收平台返回消息!进行通信!

急救!
 
刚才贴错,应该是:
CTKP_CONNECT
应用向应用程序通讯代理模块发起建立连接的请求
字段名 字节数 类型 描述
App_ID 2 Integer 应用ID
App_Name 16 OctetString 应用名称
Password 16 OctetString 应用密码
Interface_Version 4 Integer 接口版本号
 
类似这样,先定义结构体,再将结构体变量的内存复制到流,用idTCPClient发送到连接的主机。
procedure TForm1.Button1Click(Sender: TObject);
type
TPackage = record
App_ID: Word;
App_Name: String[16];
Password: String[16];
Interface_Version: Integer;
end;
var
TmpPack: TPackage;
Info: TMemoryStream;
begin
TmpPack.App_ID := 0;
TmpPack.App_Name := 'Only Test';
TmpPack.Password := '123456';
TmpPack.Interface_Version := 4;
Info := TMemoryStream.Create;
Info.ReadBuffer(TmpPack, SizeOf(Info));

IdTCPClient1.Disconnect;
IdTCPClient1.Host := '127.0.0.1';
IdTCPClient1.Port := 21;
IdTCPClient1.Connect();
IdTCPClient1.WriteBuffer(Info, SizeOf(TmpPack), False);
end;
 
我怎么接收服务端 发过来的消息包?
能不能再帮忙举个 例子!!
 
通过一个线程不停的IdTCPClient.ReadLn('结束字符');
接收到了就处理,否则继续接收。
 

Similar threads

D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
886
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
945
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
后退
顶部