多客户模式

简介:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#include <sys/types.h>
#include <sys/time.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/ioctl.h>
#include <fcntl.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
 
int  main( int  argc,  char  const  *argv[])
{
     int  server_sockfd, client_sockfd;
     int  server_len, client_len;
     struct  sockaddr_in server_address;
     struct  sockaddr_in client_address;
     int  result;
     fd_set readfds,testfds;
 
     // create a socket for server and name it
     server_sockfd=socket(AF_INET,SOCK_STREAM,0);
 
     server_address.sin_family=AF_INET;
     server_address.sin_addr.s_addr=htonl(INADDR_ANY);
     server_address.sin_port=htons(9734);
     server_len= sizeof (server_address);
 
     //bind the socket and address
     bind(server_sockfd,( struct  sockaddr*)&server_address,server_len);
 
     listen(server_sockfd,5);
 
     FD_ZERO(&readfds);
     FD_SET(server_sockfd,&readfds);
 
     while (1){
         char  ch;
         int  fd;
         int  nread;
 
         testfds=readfds;
         printf ( "server waiting...\n" );
 
         result=select(FD_SETSIZE,&testfds,(fd_set*)NULL,(fd_set*)NULL,( struct  timeval*)0);
 
         if (result<1){
             perror ( "server5..." );
             exit (1);
         }
 
         for (fd=0;fd<FD_SETSIZE;fd++){
             if (FD_ISSET(fd,&testfds)){
                 if (fd==server_sockfd){
                     client_len= sizeof (client_address);
                     client_sockfd=accept(server_sockfd,( struct  sockaddr*)&client_address,&client_len);
                     FD_SET(client_sockfd,&readfds);
                     printf ( "adding client on fd %d\n" , client_sockfd );
                 } else {
                     ioctl(fd,FIONREAD,&nread);
 
                     if (nread==0){
                         close(fd);
                         FD_CLR(fd,&readfds);
                         printf ( "removing client on fd %d\n" ,fd );
                     } else {
                         read(fd,&ch,1);
                         sleep(3);
                         printf ( "server client on fd %d\n" ,fd );
                         ch++;
                         write(fd,&ch,1);
                     }
                 }
             }
         }
     }
 
     return  0;
}
目录
相关文章
|
自然语言处理 Kubernetes 机器人
基于OpenIM 实现聊天机器人功能
基于OpenIM 实现聊天机器人功能
510 0
|
Linux Shell
Centos定期自动清理临时文件
简单Shell脚本清理临时文件 使用`cron`设置定时任务,如每天8点运行: 记得调整路径和脚本名以匹配你的环境。
303 5
|
XML Android开发 数据格式
WebView二次封装,使用简单
WebView二次封装,使用简单
604 0
|
Java 编译器 Linux
程序技术好文:详解Linux安装GCC方法
程序技术好文:详解Linux安装GCC方法
477 0
|
弹性计算 监控 JavaScript
云服务器 ECS产品使用问题之Node.js项目部署成功后无法通过公网IP+端口号访问,是什么导致的
云服务器ECS(Elastic Compute Service)是各大云服务商阿里云提供的一种基础云计算服务,它允许用户租用云端计算资源来部署和运行各种应用程序。以下是一个关于如何使用ECS产品的综合指南。
|
XML 数据格式 Python
Python Django 模版全解与实战
Python Django 模版全解与实战
240 1
Python Django 模版全解与实战
|
数据采集 人工智能 Java
Python爬虫获取电子书资源实战
最近在学习Python,相对java来说python简单易学、语法简单,工具丰富,开箱即用,适用面广做全栈开发那是极好的,对于小型应用的开发,虽然运行效率慢点,但开发效率极高。大大提高了咱们的生产力。为什么python能够在这几年火起来,自然有他的道理,当然也受益于这几年大数据和AI的火。据说网络上80%的爬虫都是用python写的,不得不说python写爬虫真的是so easy。基本上一个不太复杂的网站可以通过python用100多行代码就能实现你所需要的爬取。
667 1
Python爬虫获取电子书资源实战
|
SQL 数据可视化 数据挖掘
宜搭是一款基于云计算的在线应用搭建平台
宜搭是一款基于云计算的在线应用搭建平台
470 2
uni-app推送unipush绑定/解绑别名和标签
uni-app推送unipush绑定/解绑别名和标签
325 0
|
弹性计算 网络安全
阿里云服务器ECS更换公网IP地址的方法教程
阿里云服务器ECS更换公网IP地址的方法教程
407 0