码迷,mamicode.com
首页 > 系统相关 > 详细

linux socket认识

时间:2015-04-13 06:51:46      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:

  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);

linux socket认识

标签:

原文地址:http://www.cnblogs.com/q-z-c-ye/p/4421174.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!