从网络字节顺序获取文件大小 [英] Getting File size from network byte order

查看:86
本文介绍了从网络字节顺序获取文件大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述




以下代码显示了如何将数据包从客户端发送到服务器的

套接字。文件大小(fileSizeTemp)在发送到服务器之前转换为网络字节顺序




*((unsigned short *)& dataBuff [6 + filenameLen + 1])= htons((无符号

短)(fileSizeTemp>> 16));

*((unsigned short *)& dataBuff [ 6 + filenameLen + 3])= htons((无符号

短)((fileSizeTemp<< 16)>> 16));


if(send(clientSock,...,...)== SOCKET_ERROR)

{

// ...

}


我的问题是,如何在服务器上获取文件的大小(来自收到的数据包)




谢谢


Manu。

解决方案



Manu写道:



下面的代码显示了如何将数据包从客户端发送到服务器的插槽。文件大小(fileSizeTemp)在发送到服务器之前转换为网络字节
顺序。

*((unsigned short *)& dataBuff [6 + filenameLen + 1])= htons ((unsigned
short)(fileSizeTemp>> 16));
*((unsigned short *)& dataBuff [6 + filenameLen + 3])= htons((unsigned
) ()((fileSizeTemp<< 16)>> 16));


您可以使用htonl更简单地完成:

*((unsigned long *)& dataBuff [6 + filenameLen + 1])=

htonl(fileSizeTemp)

if(send(clientSock,...,...)== SOCKET_ERROR)
//
// ...
}

我的问题是,如何在服务器上获取文件的大小(来自收到的
包)?



ntohl。


Arnaud

MVP - VC




Manu写道:



下面的代码显示了如何将数据包从客户端发送到服务器的插槽。文件大小(fileSizeTemp)在发送到服务器之前转换为网络字节
顺序。

*((unsigned short *)& dataBuff [6 + filenameLen + 1])= htons ((unsigned
short)(fileSizeTemp>> 16));
*((unsigned short *)& dataBuff [6 + filenameLen + 3])= htons((unsigned
) ()((fileSizeTemp<< 16)>> 16));


您可以使用htonl更简单地完成:

*((unsigned long *)& dataBuff [6 + filenameLen + 1])=

htonl(fileSizeTemp)

if(send(clientSock,...,...)== SOCKET_ERROR)
//
// ...
}

我的问题是,如何在服务器上获取文件的大小(来自收到的
包)?



ntohl。


Arnaud

MVP - VC


但有4个数据的二进制。如何从4个字节的数据中提供netlong参数到ntohl




Manu。


< ;广告****** @ club-internet.fr>在消息中写道

news:11 ********************** @ g14g2000cwa.googlegr oups.com ...


Manu写道:



以下代码显示了如何从客户端向服务器发送数据包
插座。在发送到服务器之前,文件大小(fileSizeTemp)被转换为网络字节


命令



*((unsigned short *)& ; dataBuff [6 + filenameLen + 1])= htons((unsigned


short)(fileSizeTemp>> 16));
*(( unsigned short *)& dataBuff [6 + filenameLen + 3])= htons((unsigned


short)((fileSizeTemp<< 16)>> ; 16));



你可以用htonl更简单地做到这一点:
*((unsigned long *)& dataBuff [6 + filenameLen + 1])=
htonl(fileSizeTemp)


if(send(clientSock,...,...)== SOCKET_ERROR)
{
// ...
}

我的问题是,如何获取文件的大小(来自收到的


包)

在服务器上?


ntohl。

Arnaud
MVP - VC



Hi,

Following code shows how a packet is sent from a client to a server''s
socket. The file size (fileSizeTemp) is converted to network byte order
before sending to the server.

*((unsigned short *)&dataBuff[6 + filenameLen + 1]) = htons((unsigned
short)(fileSizeTemp >> 16));
*((unsigned short *)&dataBuff[6 + filenameLen + 3]) = htons((unsigned
short)((fileSizeTemp << 16) >> 16));

if (send(clientSock, ..., ...) == SOCKET_ERROR)
{
//...
}

My question is, how to get the size of the file (from the received packet)
on the server?

Thanks

Manu.

解决方案


Manu wrote:

Hi,

Following code shows how a packet is sent from a client to a server''s
socket. The file size (fileSizeTemp) is converted to network byte order before sending to the server.

*((unsigned short *)&dataBuff[6 + filenameLen + 1]) = htons((unsigned short)(fileSizeTemp >> 16));
*((unsigned short *)&dataBuff[6 + filenameLen + 3]) = htons((unsigned short)((fileSizeTemp << 16) >> 16));
You could do it more simply with htonl :
*((unsigned long *)&dataBuff[6 + filenameLen + 1]) =
htonl(fileSizeTemp)

if (send(clientSock, ..., ...) == SOCKET_ERROR)
{
//...
}

My question is, how to get the size of the file (from the received packet) on the server?


ntohl.

Arnaud
MVP - VC



Manu wrote:

Hi,

Following code shows how a packet is sent from a client to a server''s
socket. The file size (fileSizeTemp) is converted to network byte order before sending to the server.

*((unsigned short *)&dataBuff[6 + filenameLen + 1]) = htons((unsigned short)(fileSizeTemp >> 16));
*((unsigned short *)&dataBuff[6 + filenameLen + 3]) = htons((unsigned short)((fileSizeTemp << 16) >> 16));
You could do it more simply with htonl :
*((unsigned long *)&dataBuff[6 + filenameLen + 1]) =
htonl(fileSizeTemp)

if (send(clientSock, ..., ...) == SOCKET_ERROR)
{
//...
}

My question is, how to get the size of the file (from the received packet) on the server?


ntohl.

Arnaud
MVP - VC


But there are 4 byes of data. How do I supply the netlong parameter to ntohl
from 4 bytes of data?

Manu.

<ad******@club-internet.fr> wrote in message
news:11**********************@g14g2000cwa.googlegr oups.com...


Manu wrote:

Hi,

Following code shows how a packet is sent from a client to a server''s
socket. The file size (fileSizeTemp) is converted to network byte


order

before sending to the server.

*((unsigned short *)&dataBuff[6 + filenameLen + 1]) = htons((unsigned


short)(fileSizeTemp >> 16));
*((unsigned short *)&dataBuff[6 + filenameLen + 3]) = htons((unsigned


short)((fileSizeTemp << 16) >> 16));



You could do it more simply with htonl :
*((unsigned long *)&dataBuff[6 + filenameLen + 1]) =
htonl(fileSizeTemp)


if (send(clientSock, ..., ...) == SOCKET_ERROR)
{
//...
}

My question is, how to get the size of the file (from the received


packet)

on the server?


ntohl.

Arnaud
MVP - VC



这篇关于从网络字节顺序获取文件大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆