PC跟ppc的开发板之间,tcp发包测试大小端格式
来源:互联网 发布:做java程序员 编辑:程序博客网 时间:2024/05/21 17:40
PC端是x86,小端模式,开发板是power PC,大端模式。
int test_endian(){int sock;struct sockaddr_in serverAddr;rtp_hdr_t msg;int sockAddrSize = sizeof(struct sockaddr_in);sock = socket(AF_INET,SOCK_STREAM,0);if(sock==ERROR){perror("socket/n");return;}sockAddrSize = sizeof(struct sockaddr_in);bzero((char*)&serverAddr,sockAddrSize);serverAddr.sin_family = AF_INET;serverAddr.sin_len = (u_char)sockAddrSize;serverAddr.sin_port = htons(6000);if(ERROR==(serverAddr.sin_addr.s_addr = inet_addr("10.18.34.169"))){perror("inet_addr/n");close(sock);return;}printf("connect...../n");if(connect(sock,(struct sockaddr*)&serverAddr,sockAddrSize)==ERROR){perror("error connect/n");close(sock);return;}printf("sizeof(msg) = %d/n",sizeof(msg));recv(sock,(char*)&msg,sizeof(msg),0);printf("msg = 0x%x/n",*(int*)&msg);printf("msg.cc = %x/nmsg.extbit=%o/nmsg.padbit=%o/nmsg.version=%o/nmsg.markbit=%o/nmsg.paytype=%x/n",msg.cc,msg.extbit,msg.padbit,msg.version,msg.markbit,msg.paytype);close(sock);}VC 6.0下的#include "stdafx.h"#include#include #include #include #define uint16_t short int#define u_int16 short int#define u_int32 inttypedef struct { #ifdef RTP_BIG_ENDIANuint16_t version:2;uint16_t padbit:1;uint16_t extbit:1;uint16_t cc:4;uint16_t markbit:1;uint16_t paytype:7;#else // little endianu_int16 cc:4;u_int16 extbit:1;u_int16 padbit:1;u_int16 version:2;u_int16 paytype:7;u_int16 markbit:1;#endif //char pad;//char pad1;} rtp_hdr_t;int main(void){#if 1WORD wVersionRequested;WSADATA wsaData;int err;rtp_hdr_t msg;wVersionRequested = MAKEWORD(1,1);printf("sizeof(msg) = %d/n",sizeof(msg));err = WSAStartup(wVersionRequested,&wsaData);if (err != 0){return -1;}if (LOBYTE(wsaData.wVersion)!=1||HIBYTE(wsaData.wVersion)!=1){WSACleanup();return -1;}SOCKET sockSrv = socket(AF_INET,SOCK_STREAM,0);SOCKADDR_IN addrSrv;addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY);addrSrv.sin_family = AF_INET;addrSrv.sin_port = htons(6000);bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));listen(sockSrv,5);SOCKADDR_IN addrClient;int len = sizeof(SOCKADDR);SOCKET sockConn = accept(sockSrv,(SOCKADDR*)&addrClient,&len);char sendBuf[100];printf("welcome %s/n",inet_ntoa(addrClient.sin_addr));printf("send msg''''''''''''''''''''''''/n");msg.cc = 0x4;msg.extbit = 0x1;msg.markbit = 0x0;msg.padbit =0x1;msg.version = 0x1;msg.paytype = 0x9;//msg.pad = 0x1;//msg.pad1 = 0x1;printf("msg = 0x%02x/n",*(int*)&msg);send(sockConn,(char*)&msg,sizeof(msg),0);closesocket(sockConn);#endifreturn 0;}
一直不明白为什么不设置成如下格式:
typedef struct { #ifdef RTP_BIG_ENDIANuint16_t version:2;uint16_t padbit:1;uint16_t extbit:1;uint16_t cc:4;uint16_t markbit:1;uint16_t paytype:7;#else // little endianu_int16 paytype:7;u_int16 markbit:1;u_int16 cc:4;u_int16 extbit:1;u_int16 padbit:1;u_int16 version:2;#endif //char pad;//char pad1;} rtp_hdr_t;
- PC跟ppc的开发板之间,tcp发包测试大小端格式
- TCP发包客户端,可用于性能测试
- pc上最快的发包工具
- PC上最快的发包工具
- C# TCP 服务端(PC)与客户端(PPC) 简单代码
- TCP发包
- 用实际程序来测试udp sendto函数的最大发包大小------为什么是65507?
- 开发板与pc之间的文件传输:kermit and lrzsz
- 各种格式PPC手机软件的安装方法
- PPC访问PC上的SQL Server数据库
- udp发包大小
- udp发包大小选择
- TCP协议发包机制
- PC端页面之间的跳转
- PC与开发板之间最简单快速的文件传输方式
- PC与开发板之间最简单快速的文件传输方式
- 虚拟机 开发板 PC机 三者之间不能ping通的各种原因分析
- PC与开发板之间最简单快速的文件传输方式
- 短信猫开发经验归纳
- Oracle 表空間和数据文件
- C#中struct和class的区别
- Debian的init进程初始化工作原理
- 那一年,我与电脑结下了不解之缘
- PC跟ppc的开发板之间,tcp发包测试大小端格式
- I2C driver编写指导二:编写i2c client driver指南
- 弗劳士智能生态照明理念
- c#多线程应用和静态变量
- .net开发模拟外网环境
- [VB.Net]释放程序内存占用的方法
- HeapAlloc和GlobalAlloc以及VirtualAlloc三者之间的关系
- Belady现象的原因
- Solaris 服务管理器(Service Management Facility, SMF)