Chinaunix首页 | 论坛 | 博客
  • 博客访问: 109345
  • 博文数量: 74
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 757
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-20 22:42
个人简介

相信生命中的无限潜能

文章分类

全部博文(74)

文章存档

2016年(1)

2015年(30)

2014年(30)

2013年(13)

我的朋友

分类: C/C++

2014-02-25 11:54:42


  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. #include <unistd.h>
  5. #include <sys/socket.h>
  6. #include <netinet/in.h>
  7. #include <arpa/inet.h>
  8. /* socket建立服务器的文件描述符
  9.  * bind把IP地址与端口设置到文件描述符中
  10.  * listen根据客户连接的不同IP与端口,负责生产对应的文件描述符及其信息
  11.  * accept一旦listen有新的描述符产生,返回,否则阻塞.
  12.  */
  13. int main()
  14. {
  15.     int serverfd;/*描述符*/
  16.     int cfd;/*临时存放 描述符*/
  17.     struct sockaddr_in sadr;
  18.     struct sockaddr_in cadr;/**/
  19.     int r;
  20.     socklen_t len;
  21.     /*socket*/
  22.     serverfd=socket(AF_INET,SOCK_STREAM,0);
  23.     if(serverfd==-1)printf("serverfd err :%m\n"),exit(-1);
  24.     printf("建立服务器socket成功\n");
  25.     /*bind*/
  26.     sadr.sin_family=AF_INET;
  27.     sadr.sin_port=htons(9999);
  28.     inet_aton("192.168.1.162",&sadr.sin_addr);/*inet_aton()是一个改进的方法来将一个字符串IP地址转
  29. 换为一个32位的网络序列IP地址*/
  30.     r=bind(serverfd,(struct sockaddr*)&sadr,sizeof(sadr));
  31.     if(r==-1)printf("bind err:%m\n"),exit(-1);
  32.     printf("bind OK!\n");
  33.     /*listen创建一个套接口并监听申请的连接.*/
  34.     r=listen(serverfd,10);
  35.     if(r==-1)printf("3:%m\n"),exit(-1);
  36.     printf("listen OK!\n");
  37.     /*accept在一个套接口接受一个连接*/
  38.     while(1)
  39.     {
  40.         len=sizeof(cadr);/*指向存有addr地址长度的整型数*/
  41.         cfd=accept(serverfd,(struct sockaddr*)&cadr,&len);
  42.         printf("有人连接:%d,IP:%s:%u\n",cfd,inet_ntoa(cadr.sin_addr),ntohs(cadr.sin_port));
  43.         /*ntohs将一个无符号短整形数从网络字节顺序转换为主机字节顺序。*/
  44.         /*将一个IP转换成一个互联网标准点分格式的字符串*/
  45.     }
  46.     return 0;
  47. }

执行结果
[root@os 10dir]# ./a.out
建立服务器socket成功
bind OK!
listen OK!
有人连接:4,IP:192.168.1.112:54485
有人连接:5,IP:192.168.1.112:54486
有人连接:6,IP:192.168.1.112:54540
有人连接:7,IP:192.168.1.112:54541
^C
[root@os 10dir]#
用浏览器连接


阅读(1247) | 评论(0) | 转发(0) |
0

上一篇:uname

下一篇:recvfrom

给主人留下些什么吧!~~