首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 操作系统 > Linux > Windows下与Linux下编写socket程序的区别
【标  题】:Windows下与Linux下编写socket程序的区别
【关键字】:Windows,Linux,socket
【来  源】:http://blog.csdn.net/kkkk9942/archive/2007/04/19/1570822.aspx

Windows下与Linux下编写socket程序的区别

Windows下与Linux下编写socket程序的区别- -

                                      

Windows下与Linux下编写socket程序的区别

区别 


【【Windows】】

【Windows: 头文件的区别】 
#include
#include

【Windows: 初始化的区别】 
WSADATA wsaData;
WSAStartup(0x202,&wsaData);

【Windows: 声明Socket】 
SOCKET类型

【Windows: Socket关闭】
closesocket()

【Windows: Socket操作错误返回值】 
SOCKET_ERROR

【Windows: 设置socket非阻塞】 
ioctlsocket(server_socket,FIONBIO,&ul);

【Windows: WSA宏】 
WSA相关的操作

【Windows: Select()函数】 
Select()函数的第一个参数无效,写0就可以了。

【Windows: 编译连接】
Ws2_32.lib

【Windows: 错误捕捉】  
WSAGetLastError()

【Windows: 异常处理】 
没有对send()的异常处理,最后一个参数无效,写0就可以了。


【【Linux】】


【Linux: 头文件的区别】  
#include
#include
#include
#include
#include
#include

【Linux: 初始化的区别】  
Do nothing.

【Linux: 声明Socket】
SOCKET类型在Linux中没有定义,直接用int即可。

【Linux: Socket关闭】  
close()

【Linux: Socket操作错误返回值】  
在Linux中没有定义,判断socket操作是否成功可用返回值是否为-1即可,可将SOCKET_ERROR声明为-1。

【Linux: 设置socket非阻塞】  
ioctlsocket在Linux中没有定义,用fcntl替代即可,但要包含fcntl.h头文件。
#include
... ...
fcntl(server_socket,F_SETFL, O_NONBLOCK);

【Linux: WSA宏】  
WSA相关的操作在Linux不必要,直接去掉即可。

【Linux: Select()函数】  
Select()函数的第一个参数必须是后几个参数用到的socket中,值最大的数(整型)加1。

【Linux: 编译连接】  
连接是使用参数:-lstdc
运行时需要libstdc++.so.5,可在/usr/lib目录中创建一个链接。

【Linux: 错误捕捉】  
#include
extern int errno;
int geterror(){return errno;}

【Linux: 异常处理】  
当连接断开,还发数据的时候,不仅send()的返回值会有反映,而且还会像系统发送一个异常消息,如果不作处理,系统会出BrokePipe,程序会退出。为此,send()函数的最后一个参数可以设MSG_NOSIGNAL,禁止send()函数向系统发送异常消息。 

在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调用和netlink:【上一篇】
最好的linux下运行windows工具:【下一篇】
【相关文章】
  • 在 Linux 下用户空间与内核空间数据交换的方式,第 1 部分: 内核启动参数、模块参数与sysfs、sysctl、系统调...
  • 在 Linux 下用户空间与内核空间数据交换的方式,第 2 部分: procfs、seq_file、debugfs和relayfs
  • Windows 2003 Server安全配置完整篇
  • Windows Mobile简体中文字库
  • 近期Windows相关的两本新书
  • Windows 窗体中的简单数据访问
  • Broken Service Dependency on Windows 2003
  • Linux系统中date命令及相关时区介绍
  • linux基本命令日常操作[2]
  • Linux网络编程(二)
  • 【随机文章】
  • 用高速缓存加速您的 Web 服务(转载)
  • 拍案而起:揪出胡作非为的DLL黑手
  • google.com上不去了
  • 什么是PEAR?(第二篇)
  • Sybex CCNA 第二章读书笔记
  • [转] 你真的了解 telnet 吗?
  • 贷款利率又涨了,心情很沮丧!!
  • Linux下C语言编程--进程通信、消息管理
  • 2003年航空重要事件:矩阵的革命
  • JSP连接操作数据库全接触(所有流行数据库)
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.