欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

套接字

程序员文章站 2022-10-25 23:09:40
套接字 一、定义 int socket(int af,int type,int protocol); 解析:af:地址家族,一般使用AF_INET,代表的是IPv4 type:套接字的数据处理类型,主要使用两种,SOCK_DGRAM和SOCK_STREAM,分别是UDP和TCP。 protocol: ......

套接字

一、定义

int socket(int af,int type,int protocol); 

解析:af:地址家族,一般使用af_inet,代表的是ipv4

   type:套接字的数据处理类型,主要使用两种,sock_dgram和sock_stream,分别是udp和tcp。

   protocol:根据第一参数和第二个参数确定,确定支持哪种协议,一般设置为0。

二、关闭

int close(int d);

一般关闭使用close函数,关闭指定id的套接字。

int shutdown(int socket,int direction);

解析:socket:套接字id,

   direction:可以设置为0,1,2,分别对应着shut_rd,shut_wr,shut_rdwr。

三、有关套接字的结构体

struct sockaddr{

  u_short sa_family;  //internet的地址家族

  char sa_data[14];

}

解析:sockaddr:由两个字节的地址家族和包含ip地址和端口号的14个字节的地址构成。

struct in_addr{

  u_long s_addr;

}

struct sockaddr_in{

  short   sin_family;

  u_short sin_port;

  struct  in_addr sin_addr;

  char   sin_zero[8];

}

解析:sin_family:作为地址家族,相当于socket函数中个的af_inet,

   sin_port:16比特的端口号,

   sin_addr:32比特的ip地址

   sin_zero:为了与struct sockaddr 长度保持一致,设置的填充变量。

 

四、connect

int connect(int sockfd,const struct sockaddr* server_addr,socklen_t addrlen);

解析:sockfd:创建的套接字id

  server_addr:前面所述的sockaddr结构,指定数据发送的目的地,也就是服务器的地址。connect是主动连接的一方调用的,被动的一方调用的是listen和accept。

  addrlen:server_addr结构体的长度。