什么是windows sockets,Windows socket

  什么是windows sockets,Windows socket

  Windows套接字和Linux套接字编程有什么区别-lcryby-Blog Park

  Windows socket和Linux Socket编程有什么区别?Socket相关的程序应该从Windows移植到Linux

  1)头文件

  Windows下的Winsock.h/winsock2.h

  Linux下的Sys/socket.h

  错误处理:错误号h

  2)初始化

  Windows下需要WSAStartup。

  Linux下不需要

  3)关闭插座

  Windows closesocket(.)

  关闭(.)在Linux下

  4)类型

  Windows套接字

  Linux下的Int

  例如,我使用的一些宏:

  #ifdef WIN32

  typedef int socklen _ t;

  typedef int ssize _ t;

  #endif

  #ifdef __Linux__

  typedef int套接字;

  typedef无符号字符字节;

  typedef无符号长DWORD

  #定义假0

  #define套接字错误(-1)

  #endif

  5)获取错误代码

  windows getlasterror()/WSAGetLastError()

  Linux下的Errno变量

  6)设置非阻塞

  Windows ioctlsocket()

  在Linux下fcntl() fcntl.h

  7)发送函数的最后一个参数

  Windows通常设置为0。

  在Linux下,最好设置为MSG_NOSIGNAL。如果未设置,可能会导致程序在发送错误后退出。

  8)毫秒时间采集

  Windows下的GetTickCount()

  Linux下的Gettimeofday()

  3.多线程

  多线程:(Win)process . h-->(Linux)pthread . h

  _beginthread - pthread_create

  _endthread - pthread_exit

  1.linux下的套接字编程;

  1.客户端的执行步骤如下:

  插座()

  连接()

  发送()或接收()

  关闭()

  注意在connect之前要填充地址结构,将IP地址转换成网络字节顺序,一般使用inet_aton()。

  2.服务器端:

  插座()

  绑定()

  听()

  accpet()

  Recv()或send()

  关闭()

  (ps:一般将send()和recv()的最后一个参数赋值为0或1,以区分阻塞和非阻塞,其中0对应阻塞,1对应非阻塞)

  二、windows下的网络编程:

  做过windows网络编程的人都知道,微软MFC把复杂的WinSock API函数封装成类,这样更容易写网络应用。也就是说,windows提供了上层网络API函数和下层API函数。

  1.对于使用上层API函数:如果使用csocket类定义一个对象obj,那么网络编程的步骤如下:

  客户:

  obj。创建()

  obj。连接()

  Obj。Receive()或obj。发送()

  obj。关闭()

  服务器端:

  首先调用AfxSocketInit()来检测协议栈的安装。

  obj。创建()

  obj。听()

  obj。Accpet()

  Obj。Receive()或obj。发送()

  obj。关闭()

  2.采用底层API函数的步骤如下:

  客户:

  WSAStartup()

  插座()

  连接()

  发送()或接收()

  closesocket()

  服务器端:

  WSAStartup()

  插座()

  绑定()

  听()

  accpet()

  发送()

  接收()

  closesocket()

  (PS:PS:windows下的CSocket类是同步模式,有阻塞现象;CASyncSocket是异步的,没有阻塞现象。)

  通过以上对比可以发现,linux下的网络编程和windows下的底层API类似,但也有区别:

  一个区别:WSAStartup()函数要加在windows下。

  两个区别:closesocket:Linux中的close()和Windows中的close socket()。

  Windows采用上层API,一般有两类:CSocket和CAsynSocket。

  在这种情况下,下面的套接字函数的第一个字母是大写的。但是底层API中socket函数的首字母是小写的,无论是windows下还是linux下。

  原文链接:http://www.linuxidc.com/Linux/2011-03/33324p2.htm

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • windows强制结束进程命令,cmd强制关闭进程命令
  • windows下的python opencv安装攻略,ubuntu安装opencv-python
  • winserver2016更改远程桌面端口,winserver2012修改远程桌面端口,Windows Server 修改远程桌面端口的实现
  • winserver2012配置iis,win2012 iis配置,Windows Server 2016服务器IIS配置的详细步骤(图文)
  • windows钩子函数,windows钩子基础教程
  • windows钩子函数,windows钩子基础教程,Windows的钩子机制详解
  • windows批处理命令,windows批处理官方教程
  • windows批处理命令,windows批处理官方教程,windows批处理命令教程
  • windows下怎么安装perl,linux安装perl环境
  • windows下怎么安装perl,linux安装perl环境,Windows10下安装配置 perl 环境的详细教程
  • windows下cmd中切换路径与目录查看,cmd怎么切换路径到文件夹
  • windows下cmd中切换路径与目录查看,cmd怎么切换路径到文件夹,cmd命令打开及切换目录路径的实现
  • windowsandroid手机版下载,windowsandroid安装apk
  • windowsandroid手机版下载,windowsandroid安装apk,WindowsAndroid 安装教程详解
  • windows2007下载,win2008server下载
  • 留言与评论(共有 条评论)
       
    验证码: