博文

Socket程序从windows移植到linux下需要注意的 [转](2010-10-21 17:15:00)

摘要: Socket程序从windows移植到linux下需要注意的 [转]    关于这个话题网上流传的是一个相同的版本,就是那个第一项是头文件的区别,但后面列出的头文件只有#include没有(估计是原版的在不断转载的过程中有人不小心忘了把尖括号转义,让浏览器当html标记解析没了)的那个。现在整理了一下,以后也会不断补充内容。 1)头文件
windows下winsock.h或winsock2.h
linux下netinet/in.h(大部分都在这儿),unistd.h(close函数在这儿),sys/socket.h(在in.h里已经包含了,可以省了) 2)初始化
windows下需要用WSAStartup启动Ws2_32.lib,并且要用#pragma comment(lib,"Ws2_32")来告知编译器链接该lib。
linux下不需要 3)关闭socket
windows下closesocket(...)
linux下close(...) 4)类型
windows下SOCKET
linux下int(我喜欢用long,这样保证是4byte,因为-1我总喜欢写成0xFFFF) 5)获取错误码
windows下getlasterror()/WSAGetLastError()
linux下,未能成功执行的socket操作会返回-1;如果包含了errno.h,就会设置errno变量 6)设置非阻塞
windows下ioctlsocket()
linux下fcntl(),需要头文件fcntl.h 7)send函数最后一个参数
windows下一般设置为0
linux下最好设置为MSG_NOSIGNAL,如果不设置,在发送出错后有可能会导致程序退出 8)毫秒级时间获取
windows下GetTickCount()
linux下gettimeofday() 9)多线程
windows下包含process.h,使用_beginthread和_endthread
linu......

阅读全文(1927) | 评论:1

go语言编程在windows下开发环境配置(图文)(2010-07-27 14:27:00)

摘要:go语言编程在windows下开发环境配置(图文) 原文链接...
http://student.csdn.net/space.php?uid=237699&do=blog&id=36202


1.在Go中文论坛下载最新的Go for windows release 2010-05-04 2.将下载包解压在c盘下。 3.设置环境变量。 Code: set goroot=c:\go       set goarch=386      set path=c:\go\bin    set goos=windows       4.编写第一个go语言程序代码。 Code: package main    import "fmt"   func main(){           fmt.Printf("this is first my\n go program")    };   用记事本编写并保存为h.go,我保存在了c:\go\work下 5.编译并运行h.go文件 运行cmd,转到c:\go\work下分别输入 Code: 8g h.go    8l h.8    8.out   可以看到h.go编译并成功运行。也可以看到当前目录下有三个文件 6.go语言尚有待提高,在windows下中文会乱码,官方推荐notepad++编程,尚未试过,最终乱码问题我也尚未解决。go目录下也 有很多test例子。 ......

阅读全文(6518) | 评论:11

Linux开放实验室(2010-05-24 15:19:00)

摘要:原文 http://www.oschina.net/bbs/thread/8101?lp=1 简介 为方便广大Linux软件开发爱好者,轩辕高端IT培训中心于2009年10月设立了Linux开放实验室,轩辕Linux开放实验室提供了完整的 Linux软件开发环境,包括:Redhat Enterprise Linux 5.4、C/C++(GCC、GDB)、make、Java、Python、Perl、C++ Boost、C++ ACE、C++ OTL、Oracle、DB2、MySQL、Tomcat...,囊括了网络、多线程、数据库等服务器端软件开发的各个方面。 Linux开放实验室典型用途 * 熟悉Linux操作系统,如系统命令、Shell编程、vi等编辑器; * C++语言的学习与软件开发,包括基于Boost和ACE的软件开发; * C++数据库开发,OTL; * Java语言的学习与软件开发; * Java数据库开发,jdbc; * Python、Perl等脚本语言的学习与软件开发; * 更多您能发掘到的用途... 开发环境 * 操作系统:Redhat Enterprise Linux 5.4; * C/C++:GCC工具链(g++/gcc 4.4.0/4.1.2/3.4.0、gdb 6.8)、GNU make 3.81、GNU autotools 2.59等; * C++第三方库:Boost 1.40、ACE 5.7.4、OTL 4.0; * Java:Java se 6(SUN jdk 1.6.0_16); * Jdbc:Oracle ojdbc14、MySQL mysql-connector-java-5.0.8; * 数据库:Oracle 10g 企业版、DB2 express-C 9.7、MySQL 5.0.77; * Python 2.4.3/2.6.4、Perl 5.8.8; * 版本控制:CVS 1.12.13 * ... 实验室面向的人群 * 所有能通过互联网登录到实验室服务器的朋友。 开始使用 在开始使......

阅读全文(2158) | 评论:0

Android中文文档 下载(2010-03-19 18:07:00)

摘要:  内团队发起的 Android 文档的中文翻译工作已经完成,翻译的是 1.5 R1 的版本(目前最新版本是 1.6) http://www.oschina.net/uploads/doc/android_manual_cn.rar   对这些参与翻译的人员表示感谢:)......

阅读全文(1922) | 评论:0

Nginx模块开发指南中文版(2010-03-19 18:01:00)

摘要:http://www.oschina.net/bbs/thread/4180?lp=3 1. 预备知识

    你应当比较熟悉C语言。不光是“C-语法",你起码还得知道结构体和预处理指令,同时保证看到指针和函数引用出现时心里不会发毛。否则的话,就算信春哥也是没用的,看看K&R吧。

    你得对HTTP协议有一定的了解,毕竟你是在和一个web server打交道。

    如果你熟悉Nginx的配置文件就太好不过了。如果不熟悉,也没关系,这里简单介绍一下,知道概念先:Nginx配置文件主要分成四部分:main(全局设置)、server(主机设置)、upstream(上游服务器设置)和 location(URL匹配特定位置后的设置)。每部分包含若干个指令。main部分设置的指令将影响其它所有设置;server部分的指令主要用于指定主机和端口;upstream的指令用于设置一系列的后端服务器;location部分用于匹配网页位置(比如,根目录“/”,“/images”,等等)。他们之间的关系式:server继承main,location继承server;upstream既不会继承指令也不会被继承。它有自己的特殊指令,不需要在其他地方的应用。在下面很多地方都会涉及这四个部分,切记。 好了,让我们开始吧。

2. Nginx模块委派概述

    Nginx的模块有三种角色:

    * handlers 处理http请求并构造输出
    * filters 处理handler产生的输出
    * load-balancers 当有多于一个的后端服务器时,选择一台将http请求发送过去

    许多可能你认为是web server的工作,实际上都是由模块来完成的:任何时候,Nginx提供文件或者转发请求到另一个server,都是通过handler来实现的;而当需要Nginx用gzip压缩输出或者在服务端加一些东......

阅读全文(4880) | 评论:0

海量--嵌入式资源免费下载(2010-03-05 14:29:00)

摘要:1. s3c2450开发板原理图 http://www.2beanet.com/index.php/embedded/arm/126-schematic-for-s3c2450-embedded-board.html 2. EP9315(ARM9)评估板原理图(Protel格式) http://www.2beanet.com/index.php/embedded/arm/104-schematic-for-ep9315-arm-board.html 3. at91sam9263评估板原理图 http://www.2beanet.com/index.php/embedded/arm/103-schematic-for-the-evaluation-board-at91sam9263-from-atmel.html 4. AT91RM9200学习板原理图 http://www.2beanet.com/index.php/embedded/arm/102-schematic-for-at91rm9200-evaluation-board.html 5. AT91RM9200学习板PCB http://www.2beanet.com/index.php/embedded/arm/101-pcb-file-for-at91rm9200-evaluation-board.html 6. ARM9_2410 开发板原理图(还有PCB) http://www.2beanet.com/index.php/embedded/arm/100-schematic-and-pcb-files-for-s3c2410.html 7. (S3C2410) LCD控制器接口驱动函数源码 http://www.2beanet.com/index.php/embedded/arm/99-source-code-for-the-lcd-controller-on-s3c2410.html 8. ARM LINUX在EP7312上的移植 http://www.2beanet.com/index.php/embedded/arm/81-portint-arm-linux-on-ep7312.html -------------------------------------......

阅读全文(7542) | 评论:0

从U盘安装Linux--Fedora篇(2009-02-07 11:58:00)

摘要:1.下载Fedora-9-i386-DVD,放在U盘中(FAT32分区,要足够大才行 4G够了) URL:http://fedoraproject.org/zh_CN/get-fedora 2.提取出isolinux文件夹下面的两个文件 initrd.img 和 vmlinuz 放在C盘根目录下。  3.下载grub4dos,解压提取出个三个文件 grldr grub.exe 和 menu.lst(若无此文件,则可自己在C盘下建一个txt文件,然后把文件类型改为.lst就可) 放在C盘根目录下。 URL:http://download.gna.org/grub4dos/ 4.用记事本打开menu.lst,最后添加上: title Install Fedora 9 kernel (hd0,0)/vmlinuz initrd (hd0,0)/initrd.img 5.用记事本打开C盘根目录下的系统隐藏文件boot.ini,后面加上如下内容: c:\grldr=GRUB 6.重启,选择"GRUB” ,再选择"Install Fedora 9”,即可进入安装界面。 7.在img文件来源处选着对应的U盘即可 其实原理同硬盘安装^_^,因为本本的空间太小,没办法从硬盘安装就想到用U盘做载体。O(∩_∩)O哈哈~~~......

阅读全文(3371) | 评论:0

[转]GDB 调试程序简说(2009-01-14 11:32:00)

摘要: 用 GDB 调试程序 GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。或许,各位比较喜欢那种图形界面方式的,像VC、BCB等IDE的调试,但如果你是在 UNIX平台下做软件,你会发现GDB这个调试工具有比VC、BCB的图形化调试器更强大的功能。所谓“寸有所长,尺有所短”就是这个道理。 一般来说,GDB主要帮忙你完成下面四个方面的功能: 1、启动你的程序,可以按照你的自定义的要求随心所欲的运行程序。 2、可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式) 3、当程序被停住时,可以检查此时你的程序中所发生的事。 4、动态的改变你程序的执行环境。 从上面看来,GDB和一般的调试工具没有什么两样,基本上也是完成这些功能,不过在细节上,你会发现GDB这个调试工具的强大,大家可能比较习惯了图形化的调试工具,但有时候,命令行的调试工具却有着图形化工具所不能完成的功能。让我们一一看来。 一个调试示例 —————— 源程序:tst.c 1 #include 2 3 int func(int n) 4 { 5 int sum=0,i; 6 for(i=0; i 7 { 8 sum+=i; 9 } 10 return sum; 11 } 12 13 14 main() 15 { 16 int i; 17 long result = 0; 18 for(i=1; i cc -g tst.c -o tst 使用GDB调试: hchen/test> gdb tst ......

阅读全文(1856) | 评论:0

[转]Linux操作系统下C语言编程的注意事项(2008-11-19 12:03:00)

摘要:  一、工具的使用   1、学会使用vim/emacs,vim/emacs是linux下最常用的源码编辑具,不光要学会用它们编辑源码,还要学会用它们进行查找、定位、替换等。新手的话推荐使用vim,这也是我目前使用的文本编辑器。   2、学会makefile文件的编写规则,并结合使用工具aclocal、autoconf和automake生成makefile文件。   3、掌握gcc和gdb的基本用法。掌握gcc的用法对于构建一个软件包很有益处,当软件包包含的文件比较多的时候,你还能用gcc把它手动编译出来,你就会对软件包中各个文件间的依赖关系有一个清晰的了解。   4、掌握svn/cvs的基本用法。这是linux,也是开源社区最常用的版本管理系统。可以去试着参加sourceforge上的一些开源项目。   二、linux/unix系统调用与标准C库   系统调用应用软件与操作系统的接口,其重要性自然不用说,一定要掌握。推荐学习资料为steven先生的UNIX环境高级编程(简称APUE)。   三、库的学习   无论是在哪个平台做软件开发,对于库的学习都很重要,linux下的开发库很多,我主要介绍一下我常常用到的一些库。   1、glib库   glib 库是gtk+和gnome的基础库,并具是跨平台的,在linux、unix和windows下都可以用。glib库对于linux平台开发的影响就像 MFC对windows平台开发的影响一样,很多开源项目都大量的使用了glib库,包括gimp、gnome、gaim、evolution和 linux下的集群软件heartbeat。因为glib库自带有基本的数据结构实现,所以在学习glib库的时候可以顺便学习一下基本的数据结构(包括链表、树、队列和hash表)。   2、libxml库   libxml是linux平台下解析XML文件的一个基础库,现在很多实用软件都用XML格式的配置文件,所以也有必要学习一下。   3、readline库   readline 库是bash shell用的库,如果要开发命令行程序,那么使用readline库可以减少很多工作量,比如bash里的命令行自动补全,在readline里就已经有实现,当然你也可以用自己的实现替代库的行为。readline库有很多网站介绍的,只要......

阅读全文(2235) | 评论:0

深入嵌入式linux知识要点[转](2008-07-10 17:24:00)

摘要:深入嵌入式linux知识要点 1.linux理论 1.计算机体系结构 2.CPU结构 3.内存管理 4.文件系统 5.进程调度 2.linux驱动 1.i2c驱动添加使用 (inno,摄像头) 2.spi驱动添加和读写 (inno,spi的flash) 3.io驱动 (led的控制,io操作) 4.dma驱动 (lcd和ac97 alsa和网卡) 5.中断源 (inno,摄像头) 6.竞争,并发,阻塞,异步,线程,内存,io,调试(ldd3) 7.usb (libusb,skeleton.c) 8.flash,文件系统 (u-boot,kernel source) 3.linux编程 1.输入输出,文件,文件夹 (linux c 函数手册) 2.字符串,数据结构,堆栈,链表,(查找)算法,二叉树 (glib,glibc) 3.线程: 线程属性,线程同步(锁,信号量,条件变量) (多线程编程指南) 4.进程:守候进程,进程通信-管道,信号,SystemV(消息,共享内存,信号灯),读写锁,套接字 (linux网络编程指南) 5.网络:socket,ftp客户端,tftp客户端,http server,snmp命令 (inetutils-1.4.2.tar.gz源码,linux网络编程指南) 6.环境变量,库默认搜索路径,arm-linux-gcc库路径,设置搜索路径,编译流程,lds文件,内联汇编 7.gcc ,ld, ar, ranlib, objdump, readelf, objcopy工具(看博客) 8.make makefile,autoconf,aclocal, automake,configure脚本GNU make中文手册) 9.shell,perl (高级Bash脚本编程指南) 10......

阅读全文(2776) | 评论:0