设为首页 加入收藏

TOP

基本TCP套接字编程
2014-11-23 20:06:40 】 浏览:3261
Tags:基本 TCP 套接字 编程

  当使用TCP/IP协议一发客户服务器服务程序时,服务器需要等待任意数量客户端的连接,以便以他们提供服务。客户端连接服务器时,必须先知道服务器的名称。在TCP/IP中,就是服务器的IP地址和端口号。 bind()函数实现将服务器绑定到一个已知的名字上的功能。接下来要将服务器套接字设置为监听状态,这是通过listen()函数完成的。在监听状态下,如果客户端向服务器发起连接请求,服务器通过调用accept()函数来接受该连接请求。服务器与客户端完成连接后,就可以进行数据通信了。


  对客户端来说,首先调用connect()函数向服务器发出连接请求。如果服务器接受了该请求,接下来就可以与服务器通信了。


  开发套接字应用程序时,首先应进行Windows Sockets的初始化,加载Windows Sockets的实现,然后创建套接字,对TCP套接字来说,需要在socket()函数或都WSASocket()函数中指明SOCK_STREAM套接字类型。当服务器和客户端通信结束时,关闭套接字,释放Windows Sockets的实现。


  流程如下:


  服务器:创建套接字―>绑定―>监听―>接受连接―>收发数据―>关闭


  客户端:创建套接字―>连接―>收发数据―>关闭


  Windows Sockets API重要函数说明如下:


  一、WSAStartup()函数:


  不管是客户端还是服务器,开发Windows Sockets应用程序时,必须首先加载Windows Sockets动态库(DLL)。WSAStartup()函数实现此项功能。该函数是套接字        应用程序必须调用的第一个函数。


  该函数声明如下:


  int WSAStartup(


  WORD wVersionRequested,


  LPWSADATA lpWSAData


  );


  wVersionRequested:指定准备加载Windows Sockets动态库的版本。高字节指定所需要库文件的副版本,低字节指定主版本。在应用程序中可以使用MAKEWORD(X,Y)方便指定该参数。X是高位字节,Y是低位字节


  lpWSAData:指向lpwsadata结构的指针,该参数返回被加载动态库的有关信息。


  WSADATA结构声明如下:


  #define WSADESCRIPTION_LEN 256


  #define WSASYS_STATUS_LEN 128


  struct WSAData {


  WORD wVersion;


  WORD wHighVersion;


  char szDescription[WSADESCRIPTION_LEN+1];


  char szSystemStatus[WSASYSSTATUS_LEN+1];


  unsigned short iMaxSockets;


  unsigned short iMaxUdpDg;


  char *lpVendorInfo;};


  WSADATA结构被用来保存函数WSAStartup返回的Windows Sockets初始化信息。


  wVersion :Windows Sockets DLL期望调用者使用的Windows Sockets规范的版本。 高位字节存储副版本号, 低位字节存储主版本号,可以用WORD MAKEWORD(BYTE,BYTE ) 返回这个值,例如:MAKEWORD(1,1)


  wHighVersion :这个DLL能够支持的Windows Sockets规范的最高版本。通常它与wVersion相同。


  szDescription :以null结尾的ASCII字符串,Windows Sockets DLL将对Windows Sockets实现的描述拷贝到这个字符串中,包括制造商标识。文本(最多可以有256个字符)可以包含任何字符,但是要注意不能包含控制字符和格式字符,应用程序对其最可能的使用方式是把它(可能被截断)显示在在状态信息中。


  szSystemStatus :以null结尾的ASCII字符串,Windows Sockets DLL把有关的状态或配置信息拷贝到该字符串中。Windows Sockets DLL应当仅在这些信息对用户或支持人员有用时才使用它们,它不应被作为szDescription域的扩展。


  iMaxSockets :单个进出能够打开的socket的最大数目。


  iMaxUdpDg:一个进程发送或接收的最大数据报长度


  lpVendorInfo :指向销售商的数据结构的指针。这个结构的定义(如果有)超出了WindowsSockets规范的范围。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
上一篇不要小看字符串 下一篇数字转化为字符串的库函数

最新文章

热门文章

Hot 文章

Python

C 语言

C++基础

大数据基础

linux编程基础

C/C++面试题目