博文
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......
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例子。
......
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
* ...
实验室面向的人群
* 所有能通过互联网登录到实验室服务器的朋友。
开始使用
在开始使......
Android中文文档 下载(2010-03-19 18:07:00)
摘要:
内团队发起的 Android 文档的中文翻译工作已经完成,翻译的是 1.5 R1 的版本(目前最新版本是 1.6)
http://www.oschina.net/uploads/doc/android_manual_cn.rar
对这些参与翻译的人员表示感谢:)......
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压缩输出或者在服务端加一些东......
海量--嵌入式资源免费下载(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
-------------------------------------......
从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哈哈~~~......
[转]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 ......
[转]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库有很多网站介绍的,只要......
深入嵌入式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......