说明:本人环境是 win7系统 + codeblocks 12.11版本
代码如下:
main.cpp
#include <iostream>
#include <winsock2.h>
#include <winsock.h>
#include <windows.h>
using namespace std;
int main()
{
char *cpStrIp;
DWORD dwIp,dwTmpIp;
in_addr inetIp;
cpStrIp = "192.168.1.1";
dwTmpIp = htonl(inet_addr(cpStrIp));
dwIp = dwTmpIp + 2;
inetIp.S_un.S_addr = ntohl(dwIp);
cout<<inet_ntoa(inetIp)<<endl;
cout << "Hello world!" << endl;
return 0;
}
输出结果:
192.168.1.3
Hello world!
这个是实现Ip地址从192.168.1.1 +2变成192.168.1.3的IP增量计算输出的示例程序来的。
下面来说明一下使用CodeBlocks+MinGW建立该网络Socket编程工程的步骤:
打开CodeBlock单击菜单File->New->Project...弹出New from template对话框,在对框的左边选中Projects 在右边的IconView中选中Console application 然后单击[Go]按钮,新建工程strIP2inet_IP。 创建好strIP2inet_IP项目后,CodeBlock会帮我们自动打开该项目。打开项目后在左边的Management树型观察区,选Projects显示出工程项目树。展开strIP2inet_IP项目根目录下的Sources文件夹,出现main.cpp文件,双击该文件进行编辑。 在源程序编辑器中编辑main.cpp文件,在该文件中添加三个进行网络编程必要的头文件-#include <winsock2.h>,#include <winsock.h>,#include <windows.h>,然后编辑代码,代码在上面就不重复说明了,但在这里重点说明一下Codeblock对网络程序编译时需要进行的设置。
一般Codeblock编译网络程序时会出现很多奇怪的错误,这些错误例子如下:
main.cpp: undefined reference to `WSAGetLastError@0'
main.cpp: undefined reference to `ntohs@4'
main.cpp: undefined reference to `inet_ntoa@4'
main.cpp: undefined reference to `closesocket@4'
main.cpp: undefined reference to `WSACleanup@0'
解决过程:
首先单击CodeBlocks菜单栏的Project->Build Options,弹出Project build options对话框,单击选中对话框左边的树型观察区中的strIP2inet_IP根项目,然后单击选择右边的Linker settings表单页,显示出Linker settings表单面中的内容,然后在Link libraries:工作组中单击[Add]按钮,弹出Add Library对话框,单击File右边的[...]按钮,弹出文件浏览对话框,在对话框中开打你Codeblock的安装目录下的MinGW->Lib文件夹,然后寻找该目录下的libwsock32.a,libws2_32.a库文件,然选单击文件浏览对话框中的[打开]按钮,就将网络编程库的路径添加到Add Library对话框的File编辑框中了,然后单击Add Library对话框中的[OK]按钮将路径添加到了Linker settings表单页的Link linraries:文字信息浏览框中。完成以操作后我们还要进行最后一步以保证strIP2inet_IP项目能顺利编译,单击Linker settings表单页中的[Copy all to...]按钮,弹出Copy libraries对话框,然后分别单次选中对话框中的文本信息观察区中的Debug和Release选项,然后单击[OK]按钮,将libwsock32.a,libws2_32.a库文件分别复制到Debug和Release的Link Libraries:文字信息浏览框中。 完成这些步骤后,就可以使用Codeblock工具编译strIP2inet_IP项目了。