SOCKET类的设计和实现

原创 2004年08月25日 17:15:00
SOCKET类的设计和实现

WinSock基本知识

这里不打算系统地介绍socket或者WinSock的知识。首先介绍WinSock API函数,讲解阻塞/非阻塞的概念;然后介绍socket的使用。

WinSock API

Socket接口是网络编程(通常是TCP/IP协议,也可以是其他协议)的API。最早的Socket接口是Berkeley接口,在Unxi操作系统中实现。WinSock也是一个基于Socket模型的API,在Microsoft Windows操作系统类中使用。它在Berkeley接口函数的基础之上,还增加了基于消息驱动机制的Windows扩展函数。Winscok1.1只支持TCP/IP网络,WinSock2.0增加了对更多协议的支持。这里,讨论TCP/IP网络上的API。

Socket接口包括三类函数:

第一类是WinSock API包含的Berkeley socket函数。这类函数分两部分。第一部分是用于网络I/O的函数,如

accept、Closesocket、connect、recv、recvfrom、Select、Send、Sendto

另一部分是不涉及网络I/O、在本地端完成的函数,如

bind、getpeername、getsockname、getsocketopt、htonl、htons、inet_addr、inet_nton

ioctlsocket、listen、ntohl、ntohs、setsocketopt、shutdow、socket等

第二类是检索有关域名、通信服务和协议等Internet信息的数据库函数,如

gethostbyaddr、gethostbyname、gethostname、getprotolbyname

getprotolbynumber、getserverbyname、getservbyport。

第三类是Berkekley socket例程的Windows专用的扩展函数,如gethostbyname对应的WSAAsynGetHostByName(其他数据库函数除了gethostname都有异步版本),select对应的WSAAsynSelect,判断是否阻塞的函数WSAIsBlocking,得到上一次Windsock API错误信息的WSAGetLastError,等等。

从另外一个角度,这些函数又可以分为两类,一是阻塞函数,一是非阻塞函数。所谓阻塞函数,是指其完成指定的任务之前不允许程序调用另一个函数,在Windows下还会阻塞本线程消息的发送。所谓非阻塞函数,是指操作启动之后,如果可以立即得到结果就返回结果,否则返回表示结果需要等待的错误信息,不等待任务完成函数就返回。

首先,异步函数是非阻塞函数;

其次,获取远地信息的数据库函数是阻塞函数(因此,WinSock提供了其异步版本);

在Berkeley socket函数部分中

三维游戏引擎设计与实现-GUI设计与实现

-
  • 1970年01月01日 08:00

基于socket的ftp实现

服务器端的实现: #include #include #include//sockaddr_in等结构的定义 #include//addrinfo等结构的定义 #include #i...
  • lanmolei814
  • lanmolei814
  • 2015-04-22 17:37:06
  • 961

QT开发之最简QTcpSocket封装类

QTcpSocket类是客户端类,作用为发送数据。 首先是关于IP地址和端口号,这个可以选择手动输入或者自动查找。 .H中: #include extern QTcpSocket *so...
  • bigtree_mfc
  • bigtree_mfc
  • 2017-10-12 08:44:10
  • 175

MFC教程_ SOCKET类的设计和实现

  • 2008年10月20日 06:59
  • 15KB
  • 下载

使用Socket和ServerSocket实现多人聊天的聊天室程序

  • 2017年08月21日 19:54
  • 14KB
  • 下载

第14章_SOCKET类的设计和实现

  • 2010年03月09日 22:23
  • 144KB
  • 下载

SOCKET类的设计和实现

  • 2010年12月27日 16:49
  • 82KB
  • 下载

SOCKET类的设计和实现

2001年08月24日 16:00:00 SOCKET类的设计和实现 WinSock基本知识 这里不打算系统地介绍socket或者WinSock的知识。首先介绍WinSock API函数,讲解...
  • softart
  • softart
  • 2007-10-27 08:07:00
  • 325

一个基于socket的资源共享平台的实现(一)

前段时间和朋友一起做了一个类似于电驴、迅雷 + MSN工具的毛坯模型,基本上所有功能都是从socket通信级别向上实现。整体架构为C/S架构,使用MFC实现。技术上都是很老的东西,此文主要介绍类似于 ...
  • rcfalcon
  • rcfalcon
  • 2010-03-11 21:12:00
  • 1473

用ServerSocket类与Socket类实现客户端与服务端的交互

ServerSocket类,此类实现服务端的套接字,Socket类,此类实现客户端的套接字,而套接字就是两台机器间通信的端点,所以就用ServerSocket类和Socket类实现客户端与服务端的交互...
  • Zero_zzq
  • Zero_zzq
  • 2017-04-09 22:58:09
  • 1294
收藏助手
不良信息举报
您举报文章:SOCKET类的设计和实现
举报原因:
原因补充:

(最多只允许输入30个字)