分类目录归档:C/C++/C#

最近在看一个c++教程,换了另一个G++ IDE 支持 wxWidgets

第2学堂的白话C++

网址:http://www.d2school.com/

以前在博客里说的一样,因为本人不喜欢ms的东西,本来打算学c#做第二语言的,但无奈还没有完全脱离windows环境(没问题,要聊qq,要看迅雷看看,还要玩玩魔兽,CS,还真不好全部转linux下),但又想学一门可以跨系统的桌面编程,以后还能顺便写写手机程序,后来还是觉得还是c++比较适合我,java要装虚拟机,运行速度太慢

然后c++ IDE选择,当然首先G++编译器,前段时间在博客里推荐了Dev-C++,但后来用过段时间发现,它已经不更新了,而且老是出错,后来就又找了一个Code::Blocks 多个版本,包括windows linux unix等。然后又找到了一份教程,文字很通俗易懂《白话C++》

附一个CodeBlocks的汉化包

codeblocks_chs.rar

CodeBlocks官方网站 http://www.codeblocks.org/

c++新手推荐开发工具Dev C++

最近在学习C++,以前在linux下用G++学过一段时间的c++,觉得非常好用,但现在在windows下,不能直接用G++了,本来打算用VC++ 6.0,可是找了半天,英文原版的都不下400m,郁闷了,而且vc++功能太大,也不怎么符合C++标准,本来学c++也不是为了做大项目,纯粹是好玩,没必要弄个那么大的家伙,后来在网上搜索找到了Dev c++ 用的是GCC的编译器, 这样以后写的小东西也可以直接扔到linux下的GCC进行编译了,方便多了!

下载地址:

http://www.skycn.com/soft/4639.html

Dev-C++是一个Windows下的C和C++程序的集成开发环境。它使用MingW32/GCC编译器,遵循C/C++标准。开发环境包括多页面窗口、工程编辑器以及调试器等,在工程编辑器中集合了编辑器、编译器、连接程序和执行程序,提供高亮度语法显示的,以减少编辑错误,还有完善的调试功能,能够适合初学者与编程高手的不同需求,是学习C或C++的首选开发工具!多国语言版中包含简繁体中文语言界面及技巧提示,还有英语、俄语、法语、德语、意大利语等二十多个国家和地区语言提供选择。

实际上目前的DEV CPP 的应用并非如VC一样广泛 但它是目前信息学竞赛使用的C语言编译器 (gcc)关于专门学习DEV CPP的书籍基本没有 大部分信息学竞赛书籍都是《数据结构》与《算法》并没有明确指定使用的编译器 而在竞赛中DEV CPP 被广泛应用 (可以在LINUX环境下使用)

 

未命名.jpg

Linux-C-Socket编程

本文内容提到的套接字都是Berkely socket.

实用套接字的四个步骤:
1 分配空间和初始化
2 连接
3 传送数据
4 关闭

具体算法:

服务器端:

 

C++代码
  1. #include <sys/socket.h>
    #include <netinet/in.h>
       
  2.   
  3. int socket_descriptor;   
  4. socket_descriptor = socket(AF_INET, SOCK_STREAM, 0);   
  5.   
  6. int port = 8000;   
  7. struct sockaddr_in sin;   
  8. sin.sin_family = AF_INET;   
  9. sin.sin_addr.s_addr = INADDR_ANY;   
  10. pin.sin_port = htons(port);   
  11.   
  12. bind(socket_descriptor,(struct socketaddr *)&sin, sizeof(sin) );   
  13.   
  14. listen(socket_descriptor, 1024);   
  15.   
  16. struct sockaddr_in pin;   
  17. int address_size;   
  18. int temp_socket_descriptor;   
  19.   
  20. while(1) {   
  21.   temp_socket_descriptor = accept(socket_descriptor,(struct socketaddr *)&pin,  sizeof(address_size));   
  22.   ……   
  23.   close(temp_socket_descriptor);   
  24. }   

 

客户端:

 

C++代码
  1. #include <sys/socket.h>
    #include <netinet/in.h>
    #include <netdb.h>     //直接影响sockaddr_in.sin_addr的填写
      
  2.   
  3. char * host_name = ‘127.0.0.1’;   
  4. struct hostent * server_host_name;   
  5. server_host_name = gethostbyname(host_name);   
  6.   
  7. int port = 8000;   
  8. struct sockaddr_in pin;   
  9. pin.sin_family = AF_INET;   
  10. pin.sin_addr.s_addr = htol(INADDR_ANY);   
  11. pin.sin_addr.s_addr = ((struct in_addr *)(server_host_name->h_addr))->s_addr; 或者 pin.sin_addr = *(struct in_addr *) server_host_name->h_addr;   
  12. pin.sin_port = htons(port);   
  13.   
  14. int socket_descriptor;   
  15. socket_descriptor = socket(AF_INET, SOCK_STREAM, 0);   
  16. connect(socket_descriptor, (void *)&pin, sizeof(pin));   
  17. …….   
  18. close(socket_descriptor);