请教socket传输整数的问题?

happy819 2011-02-28 10:30:06
我是一个新手,想传输一个整数,可怎么也传不过去,各位帮帮忙。
BYTE byBuffer[256] = { 772 }; //772的十六进制为0304
send( mySocket, (LPCSTR)byBuffer, 2, 0);

使用网络嗅探工具发现server端接受到的数据十六进制为0400,转换为十进制变为了1024,不知道怎么回事呀?大侠们帮帮我!
...全文
357 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
无水先生 2011-03-09
  • 打赏
  • 举报
回复
举例:

char buff[64];
int xx;
memcpy(buff,&xx,sizeof(xx))//这样一来,xx自然就进入字符串里

.....

取出:
char buff[64];

int YY;
CString tmp;
tmp = substr(buff,0,sizeof(int));
YY = _atoi(tmp);

自自然然!
wyx100 2011-03-09
  • 打赏
  • 举报
回复
send( mySocket, (LPCSTR)byBuffer, 2, 0);
确实是溢出了,BYTE类型的范围:0x00~0xFF
天山游龙 2011-03-09
  • 打赏
  • 举报
回复
short s = 772;
send( mySocket, (LPCSTR)&s, sizeof(s), 0);

short r = 0;
recv( mySocket, (LPCSTR)&r, sizeof(r), 0);

r == 772;

guoln1010 2011-03-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 pmars 的回复:]
引用 2 楼 oyljerry 的回复:

吧整数转换成char*字符串,itoa(),然后socket发送字符串

+1
[/Quote]
这样的话,接收端怎么就解析数据,我的数据怎么不是数字而是78='N',34='';1='L'
windcsn 2011-03-08
  • 打赏
  • 举报
回复
BYTE byBuffer[2] = { 0x03, 0x04, }; //772的十六进制为0304
send( mySocket, (LPCSTR)byBuffer, 2, 0);
无水先生 2011-03-03
  • 打赏
  • 举报
回复
就是溢出
liangchenyan 2011-03-03
  • 打赏
  • 举报
回复
最好是将要传输的内容写在一个字符串中传输
zyyoung 2011-03-03
  • 打赏
  • 举报
回复
网络传输整形数据,可能会出现 高低位颠倒的现象,就是所谓的大端-》小端的问题
AlbertBright 2011-03-02
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 mayudong1 的回复:]
short num = 772;
BYTE byBuffer[256] = { 0 };
memcpy(byBuffer, &num, 2);
send( mySocket, (LPCSTR)byBuffer, 2, 0);


接收端
BYTE buffer[10];
short num = 0;
recv(..buffer..);
memcpy(&num, ……
[/Quote]

+1
手机写程序 2011-03-01
  • 打赏
  • 举报
回复
高位截断了。
_三皮_ 2011-03-01
  • 打赏
  • 举报
回复
772大于255要分成2个字节赋值
mayudong1 2011-03-01
  • 打赏
  • 举报
回复
short num = 772;
BYTE byBuffer[256] = { 0 };
memcpy(byBuffer, &num, 2);
send( mySocket, (LPCSTR)byBuffer, 2, 0);


接收端
BYTE buffer[10];
short num = 0;
recv(..buffer..);
memcpy(&num, buffer, 2);

pmars 2011-03-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 oyljerry 的回复:]

吧整数转换成char*字符串,itoa(),然后socket发送字符串
[/Quote]
+1
Eleven 2011-03-01
  • 打赏
  • 举报
回复
send( mySocket, (LPCSTR)byBuffer, 2, 0);
确实是溢出了,BYTE类型的范围:0x00~0xFF
hastings 2011-03-01
  • 打赏
  • 举报
回复
BYTE byBuffer[256] = { 772 };
这句话的意思是:
BYTE byBuffer[256] = { 0 };
byBuffer[0] = 772;
作为BYTE,显然已经溢出错误了。
oyljerry 2011-02-28
  • 打赏
  • 举报
回复
吧整数转换成char*字符串,itoa(),然后socket发送字符串
haogeai123 2011-02-28
  • 打赏
  • 举报
回复
sprintf格式化不就行了吗?

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧