久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1241|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

SOkit的C語言源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:575265 發(fā)表于 2019-6-30 22:25 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
有用的sokit
  1. #include<stdio.h>
  2. #include<stdlib.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. #define PORT 4321
  10. #define BUF_SIZE 1024
  11. int main(int argc, char *argv[])
  12. {
  13. int sockfd, sendbytes, recvbytes;
  14. char buf[BUF_SIZE];
  15. struct hostent *host;
  16. struct sockaddr_in serv_addr;
  17. if(argc<2)
  18. {// 檢查程序參數(shù)個(gè)
  19. printf("USAGE: ./tclient Hostname(or ip address)\n");
  20. exit(1);
  21. }
  22. //檢查程序參數(shù)指定的服務(wù)器地止
  23. if((host = gethostbyname(argv[1])) == NULL)
  24. {
  25. perror("gethostbyname");
  26. exit(1);
  27. }
  28. if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
  29. {// 創(chuàng)建一個(gè)流
  30. socket perror("socket");
  31. exit(1);
  32. }
  33. //初始化serv_addr結(jié)構(gòu)體變
  34. serv_addr.sin_family = AF_INET;
  35. serv_addr.sin_port=htons(PORT);
  36. serv_addr.sin_addr=*((struct in_addr *)host->h_addr);
  37. bzero(&(serv_addr.sin_zero), 8);
  38. // 連接服務(wù)
  39. if(connect(sockfd,(struct sockaddr *)&serv_addr,sizeof(struct sockaddr)) == -1)
  40. {perror("connect");
  41. exit(1);
  42. }// 顯示連接信
  43. printf("connect to server %s...\nInput the msg to send:\n", argv[1]);
  44. while (1)
  45. { // 循環(huán)發(fā)送、接收服務(wù)器信
  46. bzero(buf, sizeof(buf));// 清空緩
  47. if(fgets(buf, BUF_SIZE, stdin)) {
  48. // 終端輸入一行數(shù)據(jù)
  49. if (strcmp(buf, "exit\n") == 0) break;// 判斷是否退出循
  50. if ((sendbytes = send(sockfd, buf, strlen(buf), 0)) == -1)
  51. { // 是否發(fā)送成功
  52. perror("send");
  53. exit(1);
  54. }
  55. }
  56. bzero(buf, sizeof(buf));// 清空緩沖
  57. if((recvbytes = recv(sockfd, buf, BUF_SIZE, 0)) == -1)
  58. {
  59. // 等待接收數(shù)據(jù)
  60. perror("recv");
  61. exit(1);
  62. }
  63. else printf("receive from %d(socket): %s\n", sockfd, buf); // 打印接收數(shù)據(jù) }
  64. close(sockfd);// 關(guān)閉
  65. socket return 0;
  66. }


  67. #include<stdio.h>
  68. #include<stdlib.h>
  69. #include<unistd.h>
  70. #include<sys/types.h>
  71. #include<sys/stat.h>
  72. #include<string.h>
  73. #include<sys/socket.h>
  74. #include<netinet/in.h>
  75. #include<netdb.h>
  76. #include<time.h>
  77. #include <string.h>
  78. #include <sys/ioctl.h>
  79. #include <arpa/inet.h>
  80. #define PORT 4321
  81. #define MAX_QUE_CONN_NM 5
  82. #define MAX_SOCK_FD FD_SETSIZE
  83. #define BUFFER_SIZE 1024
  84. #define HOSTLEN 256
  85. int main()
  86. {
  87. struct sockaddr_in  server_sockaddr, client_sockaddr;
  88. int sin_size, count;
  89. fd_set inset, tmp_inset;
  90. int sockfd, client_fd, fd;
  91. char buf[BUFFER_SIZE];
  92. // 接收、發(fā)送緩
  93. struct sockaddr_in scinf[100];
  94. // 客戶端地址池
  95. bzero((void *)scinf, sizeof(scinf));
  96. // 創(chuàng)建
  97. socket if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
  98. {
  99. perror("socket");
  100. exit(1);
  101. }
  102. // 初始化服務(wù)器地址結(jié)構(gòu)體
  103. server_sockaddr.sin_family=AF_INET;
  104. server_sockaddr.sin_port=htons(PORT);
  105. server_sockaddr.sin_addr.s_addr = INADDR_ANY;
  106. bzero(&(server_sockaddr.sin_zero), 8);
  107. // 為bind設(shè)置地址復(fù)用
  108. int i = 1;
  109. setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &i, sizeof(i));
  110. if(bind(sockfd, (struct sockaddr *)&server_sockaddr, sizeof(struct sockaddr))==-1)
  111. {
  112. perror("bind");
  113. exit(1);
  114. }
  115. // 開始偵聽客戶端連
  116. if(listen(sockfd, MAX_QUE_CONN_NM) == -1)
  117. {
  118. perror("listen");
  119. exit(1);
  120. }
  121. printf("Begin listening...\n");
  122. // 準(zhǔn)備非阻塞方式連接多路客戶端
  123. FD_ZERO(&inset);
  124. FD_SET(sockfd, &inset);
  125. while (1)
  126. {
  127. tmp_inset = inset;
  128. sin_size = sizeof(struct sockaddr_in);
  129. memset(buf, 0, sizeof(buf));
  130. if(!(select(MAX_SOCK_FD, &tmp_inset, NULL, NULL, NULL) > 0))
  131. {//等待網(wǎng)絡(luò)消息
  132. perror("select");
  133. exit(1);
  134. }
  135. for(fd = 0; fd < MAX_SOCK_FD; ++fd)
  136. {
  137. if (FD_ISSET(fd, &tmp_inset) > 0)
  138. {
  139. if (fd == sockfd)
  140. {// 有客戶端連接請(qǐng)求,accept
  141. if((client_fd = accept(sockfd, (struct sockaddr*)&client_sockaddr, &sin_size))==-1)
  142. {
  143. perror("accept");
  144. exit(1);
  145. }
  146. FD_SET(client_fd, &inset);
  147. printf("New connection from %s\n", inet_ntoa(client_sockaddr.sin_addr));
  148. if(client_fd < 100 && client_fd >= 0)// 新連接客戶端記入地址
  149. memcpy((void *)(&scinf[client_fd]), (void *)&client_sockaddr, sin_size);
  150. }
  151. ellse
  152. {
  153. // 有客戶端數(shù)據(jù)
  154. if((count = recv(fd, buf, BUFFER_SIZE, 0)) > 0)
  155. {// 接收數(shù)
  156. if(fd >= 0 && fd < 100)
  157. printf("Received from %s:\t%s\n", inet_ntoa(scinf[fd].sin_addr), buf);
  158. if((count = send(fd, buf, strlen(buf), 0)) == -1)
  159. { // 回送數(shù)據(jù)
  160. perror("send");
  161. exit(1);
  162. }
  163. }
  164. else
  165. {// 無法讀取數(shù)據(jù),可能連接以斷
  166. if(fd >= 0 && fd < 100)
  167. printf("Client %s has left\n", inet_ntoa(scinf[fd].sin_addr));
  168. memset((void *)(&scinf[client_fd]), 0, sin_size);
  169. close(fd);
  170. FD_CLR(fd, &inset);
  171. }
  172. }
  173. }
  174. }
  175. }
  176. close(sockfd); return 0;
  177. }
復(fù)制代碼


sokit.zip

3.9 MB, 下載次數(shù): 4, 下載積分: 黑幣 -5

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 91精品国产综合久久婷婷香蕉 | 亚洲欧美一区二区三区情侣bbw | 国产精品资源在线观看 | 日韩av一区二区在线观看 | 亚洲精品乱码8久久久久久日本 | 欧美日韩一二三区 | 九九热精品在线视频 | 亚洲成人av一区二区 | 日本不卡一区二区三区 | 狠狠亚洲| 在线免费观看黄色网址 | 国产精品毛片无码 | 麻豆国产一区二区三区四区 | 国内自拍视频在线观看 | 成人久久久 | 91欧美激情一区二区三区成人 | 激情六月丁香婷婷 | 精品无码久久久久国产 | 日韩三级免费观看 | 久久久国产一区二区三区 | 天天拍天天色 | 国产精品美女久久久 | 亚洲不卡在线观看 | 成人免费网站 | 欧美一区二不卡视频 | 亚洲精品一区二区三区中文字幕 | 国产激情片在线观看 | 欧美日韩国产中文 | 成人黄色av网址 | av毛片 | 欧美不卡视频 | 一区二区三区免费 | 国产视频1区 | www狠狠干| 最新中文字幕在线 | 午夜丰满少妇一级毛片 | 日美女逼逼 | 欧美午夜剧场 | 久久久久无码国产精品一区 | av在线一区二区三区 | 性高湖久久久久久久久3小时 |