linux socket认识

  linux 在C的方式下,服务端的创建主要包括几个模块:套节字的创建、封装IP地址和端口号以及socket连接方式、绑定socket和封装的struct sockaddr_in,

监听的执行、开启服务端,接受client链接、接受客户端消息、发送服务端消息。

  套节字的创建:

  代码:

  int socket;

  socket = new Socket(AF_INET,SOCK_STREAM,0);

  注释:

  1.AF_INET:IPV4网络协议

  2.AF_INET6:IPV6网络协议

  3.SOCK_STREAM:面向链接的TCP协议

  4.SOCK_DGRAM:非链接的UDP协议

  封装IP地址和端口号:

  代码:

  struct sockaddr_in server;

  int port = 8888;

  bzero(&server,sizeof(server));

  server.sin_family=AF_INET

  server.sin_addr.s_addr = INADDR_ANY;

  server.sin_port = htons(port);

  注释:

  1.bzero();用来初始化struct sockaddr_in

  2.sin_family设置网络协议,只能是AF_INET

  3.sin_addr.s_addr用来设置IP地址,INADDR_ANY代表本机IP地址

  4.sin_port用来设置端口号

  绑定socket和struct sockaddr_in

  代码:  

  bind(sock,(struct sockaddr*)&server,sizeof(struct sockaddr));

  注释:

  bind(sock句柄,struct sockaddr_in指针,struct sockaddr_in长度);

  开启监听等待客户端连接:

  代码:

  struct sockaddr_in temp;

  int addresssize;

  int client_sock;

  while(1)

  {

    client_sock=accept(sock,(struct sockaddr_in*)&temp,&addresssize);

  }

  收发客户端数据:

  char buf[1024];

  int len;

  recv(client_sock,buf,1024,0);

  printf("client recv:%s\n",buf);

  len=strlen(buf);

  send(client_sock,buf,len,0);

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。