龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

对C++手册内容简介

时间:2011-04-12 23:18来源:未知 作者:admin 点击:
分享到:
学无止境,最近学习了C++手册的一些知识,写了二段代码.希望有人来点评,指出其中的错误,或需要改进的地点.在写的过程当中,遇到很多问题,不段的问人,在贴求助。 查看 C++ 手

学无止境,最近学习了C++手册的一些知识,写了二段代码.希望有人来点评,指出其中的错误,或需要改进的地点.在写的过程当中,遇到很多问题,不段的问人,在贴求助。

查看C++手册,查看网上教程才得以写出. 但C++的许多基础知识我还是不懂.并不段的在学习.  由于工作繁忙,学习进度实在是小得可怜,发了很多C++语言的基础.在那里我学到了许多知识. 如果打算学习C++手册的成员们就一起吧。

  1. #include <stdlib.h>    
  2. #include <stdio.h>    
  3. #include <errno.h>    
  4. #include <string.h>    
  5. #include <netdb.h>    
  6. #include <sys/types.h>    
  7. #include <netinet/in.h>    
  8. #include <sys/socket.h>    
  9. #include <syslog.h>    
  10. #include <unistd.h>     
  11. #include <netinet/in.h>      
  12. #include <sys/socket.h>        
  13. #include <arpa/inet.h>        
  14. #include <errno.h>    
  15. #include <sys/ipc.h>        
  16. #include <sys/shm.h>    
  17. /*建立精灵进程*/    
  18. int daemon_init(void)    
  19. { pid_t pid;    
  20. if((pid = fork()) < 0) return(-1);    
  21. else if(pid != 0) exit(0); /* parent exit */    
  22. /* child continues */    
  23. setsid(); /* become session leader */    
  24. chdir("//tmp"); /* change working directory */    
  25. umask(0); /* clear file mode creation mask */    
  26. close(0); /* close stdin */    
  27. close(1); /* close stdout */    
  28. close(2); /* close stderr */    
  29. return(0); }    
  30. /*读取文件数据*/    
  31. void myread(char *buff)    
  32. {    
  33. char buf[1024];    
  34. FILE *fp;    
  35. fp = fopen("/proc/net/dev", "r");    
  36. if(!fp)    
  37.  {    
  38. perror("fopen");    
  39. exit(2);    
  40. }    
  41. fgets(buf, 1024, fp);    
  42. fgets(buf, 1024, fp);    
  43. fgets(buf, 1024, fp);    
  44. fgets(buf, 1024, fp);    
  45. fscanf(fp, "%s", buf);   /*从第三行开始读*/    
  46. snprintf(buff, 100, "%s", buf);    
  47. fclose(fp);    
  48. printf("%sn", buf);    
  49. }    
  50.     
  51. int main(int argc, char *argv[])    
  52. {    
  53. int sockfd,new_fd;     
  54. struct sockaddr_in server_addr;    
  55. struct sockaddr_in client_addr;    
  56. int sin_size,portnumber;    
  57. char hello[1024];    
  58. /* 服务器端开始建立socket描述符 */    
  59. if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)    
  60. {    
  61. printf("Socket error:%sna",strerror(errno));    
  62. exit(1);    
  63. }    
  64. /* 服务器端填充 sockaddr_in结构 */    
  65. bzero(&server_addr,sizeof(struct sockaddr_in));    
  66. server_addr.sin_family=AF_INET;    
  67. server_addr.sin_addr.s_addr=inet_addr("本机IP");        
  68. server_addr.sin_port=htons(10240); /*端口号转换为网络字节序*/    
  69. /* 捆绑sockfd描述符 */    
  70. if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==    
  71. -1)    
  72. {    
  73. printf("Bind error:%sna",strerror(errno));    
  74. exit(1);    
  75. }    
  76. /* 监听sockfd描述符 */    
  77. if(listen(sockfd,5)==-1) /*5为请求队列的最大请求数*/    
  78. {    
  79. printf("Listen error:%sna",strerror(errno));    
  80. exit(1);    
  81. }    
  82. while(1)    
  83. {    
  84. /* 服务器阻塞,直到客户程序建立连接 */    
  85. sin_size=sizeof(struct sockaddr_in);    
  86. if((new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size    
  87. ))==-1)    
  88. {    
  89. printf("Accept error:%sna",strerror(errno));    
  90. exit(1);    
  91. }    
  92. /*inet_ntoa的作用是将一个32位Ipv4地址转换为相应的点分十进制数串*/    
  93. printf("Server get connection from %sn",inet_ntoa(client_addr.sin_addr));    
  94. /*向客户端发送hello字符数组的内容*/    
  95. myread(hello);    
  96. if(write(new_fd,hello,strlen(hello))==-1)    
  97. {    
  98. printf("Write Error:%sn",strerror(errno));    
  99. exit(1);    
  100. }    
  101. /* 这个通讯已经结束 */    
  102. close(new_fd);    
  103. }/* while结尾处*/    
  104. close(sockfd);    
  105. exit(0);    
  106. }   
精彩图集

赞助商链接