c++急救:这是我在网上下载的个程序,能够通过编译,但是似乎不能运行,请哪位大侠指点迷津,谢谢!

来源:百度知道 编辑:UC知道 时间:2024/05/15 15:30:21
#include<iostream>
#include<fstream>
using namespace std;
#include<winsock.h> // 本机字节序转换为网络字节序:htons
#pragma comment(lib, "WS2_32.LIB")

unsigned short checksum_calculating(unsigned short *pBuffer, int nSize)
{
unsigned long dwCksum = 0; // 32位累加和
// 以两字节为单位反复累加
while(nSize > 1)
{
dwCksum += *pBuffer++;
nSize -= sizeof(unsigned short);
}
// 如果总字节数为奇数则加上最后一个字节
if (nSize)
{
dwCksum += *(unsigned char*) pBuffer;
}
// 将位累加和的高位与低位第一次相加
dwCksum = (dwCksum >> 16) + (dwCksum & 0xffff);
// 将上一步可能产生的高位进位再次与低位累加
dwCksum += (dwCksum >> 16);
// 返回位校验和
return (unsigned short) (~dwCksum);
}

int main(int argc, char * argv[])
{

// 创建输入文件流

ifstream fInfile;
//fInfile <&l

cout << "校验和为:x" << hex << htons( *(unsigned short *)(pBuf+2) )
<< " (以网络顺序显示)"<< endl;

中 htons 是什么东东?
另外
pBuf[0] = unsigned char(0xab);
pBuf[1] = unsigned char(wLen);
改为
pBuf[0] = char(0xab);
pBuf[1] = char(wLen);

我也只能看这一点点了。。。

ifstream fInfile;和fstream fOutfile;

二语句之间少了创建输入文件流的语句即:fopen

fInfile.open(argv[1], ios::in|ios::binary);

二语句之间少了创建输入文件流的语句即:fopen

fInfile.open(argv[1], ios::in|ios::binary);