TCP调试助手,十六进制发送或者字符串形式发送的理解
“无论创作还是欣赏,都是对法则和规律的逃逸,自由是艺术的源泉”-- 黑格尔
TCP调试助手中,在发送时可以选择十六进制发送或者字符串形式发送!
其实,两者最终调用的都是系统的socket send函数,例如linux下的send(int sockfd, const void *buff, size_t nbytes, int flags);发送时,你向buff指示的地址里写了什么,就发什么,该函数如实地将这些数据以2进制地方式放到发送缓冲区里面。例如,你定义了unsignedchar buf[2]={0x11,0x22},发送时将buf传递给形式参数buff,缓冲区中存的是0001000100020002,同样地另一端调用recv函数接受到的是同样的内容。
因此,TCP调试助手中的两种发送方式,只是它自己作为一个软件增加的一些功能,该功能实现将你在发送窗口输入的东西转换成你指定的东西然后放到发送缓存中:如果选择字符串发送,则发送缓冲区被存入的是各个字符的asc码值对应的2进制;如果选
择16进制发送(一般需要你将各个16进制数用空格分开),例如01 03 33,则发送缓冲区中存的是000000010000000300030003,在接收端收到的则是buf[0]=0x01,buf[1]=0x03,buf[2]=0x33;
调试助手的接收端的两种选项也是类似的,它决定了将接受到的2进制数据做何解释!
Ref:
http://surpass-li.iteye.com/blog/2233553