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
#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);