梦想 就像鸡蛋
要么孵化 要么臭掉
要么孵化 要么臭掉
TCP的socket连接示例
Made In Zeal 转载请保留原始链接:http://www.zeali.net/entry/13
用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
发贴统计

我的地盘
#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,对我要写的程序很有帮助