当前位置: 技术问答>linux和unix
socket传输int型数字的问题
来源: 互联网 发布时间:2017-03-07
本文导语: 请问用socket如何传输int 类型的值啊? 比如:现在有两个数字s和l, s是unsigned short型的, l是unsigned int型的: unsigned short s = 110; unsigned int 1 = 800; 当然110和800这两个数字是我随便举的, 我现在需要把s和l这...
请问用socket如何传输int 类型的值啊? 比如:现在有两个数字s和l, s是unsigned short型的, l是unsigned int型的:
unsigned short s = 110;
unsigned int 1 = 800;
当然110和800这两个数字是我随便举的, 我现在需要把s和l这两个数字写入一个socket中, 然后传递到网络的另一端,另外一段收到数据包后, 可以得到s=110, l=800。 该如何写啊?
只需要把关键的地方些出来就行了。
unsigned short s = 110;
unsigned int 1 = 800;
当然110和800这两个数字是我随便举的, 我现在需要把s和l这两个数字写入一个socket中, 然后传递到网络的另一端,另外一段收到数据包后, 可以得到s=110, l=800。 该如何写啊?
只需要把关键的地方些出来就行了。
|
声明一个char [6]
memcpy进去,接收端memcpy出来
memcpy进去,接收端memcpy出来
|
你事先协商好字节序呗
都是小端的x86机器何必再去搞大端的网络字节序,直接memcpy就行了
真要变成网络字节序也可以啊,socket不就有htonl么
都是小端的x86机器何必再去搞大端的网络字节序,直接memcpy就行了
真要变成网络字节序也可以啊,socket不就有htonl么
|
lz想多了,socket把所有数据都当作二进制流传输
int a;
write(socketfd,&a,sizeof(a));
int b;
read(socketxx,&b,sizeof(b));
int a;
write(socketfd,&a,sizeof(a));
int b;
read(socketxx,&b,sizeof(b));
|
unsigned short s = 110;
unsigned int 1 = 800;
char buf[512];
//...
memset(buf, 0, sizeof(buf));
sprintf(buf, "%hu#%u#", s, l); //格式化, #表示一个数结束
write(sockfd, buf, sizeof(buf)); //发送出去
接收端
//...
read(sockfd, buf, sizeof(buf)); //接收
//再将数据还原
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。