Windows网络编程(二):Socket简介

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/tutucoo/article/details/84503554

Socket简介

Socket被称为套接字,描述了IP和端口等信息,是一个通信链的句柄。

微软专门开发了一套支持多种网络协议的网络编程接口,叫做Winsock,Winsock是Windos SDK的一部分,全称Windows Sockets API。它对多种协议做了封装,Socket就是Winsock对TCP协议的封装。

vc++是微软开发的一套开发工具,它不仅支持C和C++,还提供一套可视化编程框架MFC。虽然MFC很强大,但是Windos API开发出的程序体积更小、效率更快。

Socket通信流程

Winsock定义了一系列接口用于建立两台或多台机器之间的通信,最常见的是一台服务器跟多台客户机的通信。

服务器创建Socket程序流程

WSAStartup()->socket()->bind()->listen()->accept()->recv/send()->closesocket()

客户端创建Socket程序流程

WSAStartup()->socket()->connect()->send()/recv()->closesocket()

重点介绍一下bind()函数,这个函数用来给套接字绑定端口和IP信息:

int bind(SOCKET s,const struct sockaddr FAR *name,int namelen);

s:新创建的套接字,后面的提供的IP和端口会绑定它

name:这个结构体保存了IP和端口等信息,定义如下:

struct sockaddr{

   u_short sa_family;

   char sa_data[14];

}

sockaddr是为了保持各个特定协议之间的兼容性而设计的,这个结构体再细分就是:

struct sockaddr_in{

   short sin_family;

   u_short sin_port;

   struct in_addr sin_addr;

   char sin_zero[8];

}

第三个成员是个in_addr结构体,定义如下:

struct in_addr{

   union{

       struct{ u_char s_b1,s_b2,s_b3,s_b4;}S_un_b;

       struct{ u_short s_w1,s_w2;}S_un_w;

       u_long S_addr;

   }S_un;

}

猜你喜欢

转载自blog.csdn.net/tutucoo/article/details/84503554