当前位置: 技术问答>linux和unix
谁有一个用c的socket传送特殊格式数据包的例子?具体格式如下:
来源: 互联网 发布时间:2015-07-14
本文导语: 消息头的格式: Message Length 4 Integer 消息的总长度(字节) Command ID 4 Integer 命令ID Sequence Number 12 Integer 序列号 消息体的格式: Login Type 1 Integer 登录类型。1:SP向IDMS建立的连接,用 ...
消息头的格式:
Message Length 4 Integer 消息的总长度(字节)
Command ID 4 Integer 命令ID
Sequence Number 12 Integer 序列号
消息体的格式:
Login Type 1 Integer 登录类型。1:SP向IDMS建立的连接,用
于发送命令
2:IDMS向SP建立的连接,用
于发送命令
3:SP与IDMS之间建立的测试
连接,用于跟踪测试其
它:保留
Login Name 16 Text 服务器端给客户端分配的登录名
Login Passowrd 16 Text 服务器端和Login Name对应的密码
Reserve 8 Text 保留,扩展用
哪位侠客能给做出来?万分感谢,或着给些这方面的资料,尤其是怎么定义数据,
怎么把消息组装起来,请多赐教!
Message Length 4 Integer 消息的总长度(字节)
Command ID 4 Integer 命令ID
Sequence Number 12 Integer 序列号
消息体的格式:
Login Type 1 Integer 登录类型。1:SP向IDMS建立的连接,用
于发送命令
2:IDMS向SP建立的连接,用
于发送命令
3:SP与IDMS之间建立的测试
连接,用于跟踪测试其
它:保留
Login Name 16 Text 服务器端给客户端分配的登录名
Login Passowrd 16 Text 服务器端和Login Name对应的密码
Reserve 8 Text 保留,扩展用
哪位侠客能给做出来?万分感谢,或着给些这方面的资料,尤其是怎么定义数据,
怎么把消息组装起来,请多赐教!
|
Message Length 4 Integer 消息的总长度(字节)
Command ID 4 Integer 命令ID
Sequence Number 12 Integer 序列号
消息体的格式:
Login Type 4/*改成4字节吧,好操作*/ Integer 登录类型。1:SP向IDMS建立的连接,用
于发送命令
2:IDMS向SP建立的连接,用
于发送命令
3:SP与IDMS之间建立的测试
连接,用于跟踪测试其
它:保留
Login Name 16 Text 服务器端给客户端分配的登录名
Login Passowrd 16 Text 服务器端和Login Name对应的密码
Reserve 8 Text 保留,扩展用
struct data{
int a;
int b;
char c[12];
int d;
char e[16];
char f[16];
char g[8];
};
/*send*/
struct data send;
memset((void*)&send, 0, sizeof(send));
send.a = htonl(sizeof(send));
send.b = htonl(id);
memcpy((void*)(send.c), seq, 12);
send.d = htonl(type);
strncpy(send.e, name, 15);
strncpy(send.f, pass, 15);
strncpy(send.g, msg, 7);
send(fd, (const void*)&send, sizeof(send), 0);
/*recv*/
u_char tmp[128];
int recv_len=0;
int reVal=0;
struct data recv;
memset((void*)tmp, 0, sizeof(tmp));
memset((void*)&recv, 0, sizeof(recv));
do{
if((reVal = recv(fd, (void*)&tmp, sizeof(recv)-recv_len, 0)) == -1)
/*不继续处理*/;
recv_len += reVal;
}while(recv_len
Command ID 4 Integer 命令ID
Sequence Number 12 Integer 序列号
消息体的格式:
Login Type 4/*改成4字节吧,好操作*/ Integer 登录类型。1:SP向IDMS建立的连接,用
于发送命令
2:IDMS向SP建立的连接,用
于发送命令
3:SP与IDMS之间建立的测试
连接,用于跟踪测试其
它:保留
Login Name 16 Text 服务器端给客户端分配的登录名
Login Passowrd 16 Text 服务器端和Login Name对应的密码
Reserve 8 Text 保留,扩展用
struct data{
int a;
int b;
char c[12];
int d;
char e[16];
char f[16];
char g[8];
};
/*send*/
struct data send;
memset((void*)&send, 0, sizeof(send));
send.a = htonl(sizeof(send));
send.b = htonl(id);
memcpy((void*)(send.c), seq, 12);
send.d = htonl(type);
strncpy(send.e, name, 15);
strncpy(send.f, pass, 15);
strncpy(send.g, msg, 7);
send(fd, (const void*)&send, sizeof(send), 0);
/*recv*/
u_char tmp[128];
int recv_len=0;
int reVal=0;
struct data recv;
memset((void*)tmp, 0, sizeof(tmp));
memset((void*)&recv, 0, sizeof(recv));
do{
if((reVal = recv(fd, (void*)&tmp, sizeof(recv)-recv_len, 0)) == -1)
/*不继续处理*/;
recv_len += reVal;
}while(recv_len