We stand alone,
together.
- BAND of BROTHERS
TCP的socket连接示例
用C实现的TCP socket连接/读/写操作。采用fcntl设置非阻塞式连接以实现connect超时处理;采用select方法来设置socket读写超时。此示例可被编译运行于Windows/unix系统。
源文件connector.c
原来的代码在windows下编译不通过,今天qzj问起才发现。因为加了异步的处理,没有对这部分代码进行兼容性处理。本着做学问一丝不苟嘀精神,重新修改了一下源代码。以下代码在VC++6和linux下编译执行通过 :)
同时mark几个有用的url:
http://people.web.psi.ch/rohrer_u/sample1.htm Demo program for remote CAMAC access via TCP/IP
http://www.lsword.net/code/list.asp?id=1383 将Socket应用程序从Unix向Windows移植中应注意的几点问题
This Entry was Last Modified on 2007-05-24 16:33
日志存档
ac米兰 ajax apache api blog blogchina cctv css dhtml download dreamhost dvd encoding error feeds firefox flash framework gmail google google_analytics google_talk http ide ie ie7 javascript jquery linux maxthon mod_rewrite movies msn mvc mysql oracle php pippo pivot rss shell socket sohu spammers svn vs web web2 webclient weblogic windows xml zend 阿根廷 安全漏洞 奥运 备份 变形金刚 程序员 地铁 浮动层 搞笑 工具 冠军杯 管理 火箭 进程 客户端 篮球 厉 旅行 命令行 欧洲杯 人生 设计模式 世界杯 数据库 搜索引擎 算法 图片 无极 系统优化 笑话 姚明 游戏 源代码 周杰伦 字符编码 足球 浏览器


#ifdef WIN32
#include <winsock2.h>
#else
...
#include <netinet/in.h>
在windows下只需要winsock2.h,所以你只需要把wsock32.lib 加到 link 目标里面即可。具体方法请参见本文源代码开头的注释部分。
我编译时需要修改如下:
getsockopt()函数最后一个参数linux下面是socklen_t*类型,所以要做个强制转换,变成:
if(getsockopt(s, SOL_SOCKET, SO_ERROR, (char *)&error, (socklen_t *)&len) < 0)
然而win32没有socklen_t定义(我没找到),所以我定义了一个宏在WIN32下面:
#define socklen_t int
编译通过了:)再次感谢你的code,对我要写的程序很有帮助