linux socket多客户端程序
代码能实现多个客户端同时向服务器发送消息,服务器接收并作出回应。当客户端连接数量超过预定值时,程序会报错,服务器能显示当前有多少客户端连接。
算是对一个服务器的压力测试吧,比如服务器设置能同时接收10个客户端连接,当第11个客户端连接时会提示连接不上,服务器也会显示连接数已满。
希望各位大神们能提供个思路啊,最好有代码~现在就能实现一个客户端和服务器的通信,十分感谢!!!
------解决方案--------------------I/O多路转接select epoll 能做到
------解决方案--------------------类似这样的代码这儿有不少,看书的时候随手写的测试代码!但抱着负责的态度,代码是不会给你的。但可以教你怎么写!
既然说是连接,那肯定是用TCP协议!
第一种方法采用多进程方式,主进程负责监听,每收到一个连接fork一个子进程单独处理,同时主进程里面,保存连接数,当连接数满时对与再收到的连接,直接调用close主动关闭.
第二种方法采用多线程方式,跟第一种方法唯一的区别就是,进程换成了线程,其他都一样。
第三种方法采用select,设置为非阻塞的模式,用select监听所有描述符。
第四种方法采用epool,写法也差不多。
无论采用那种模式,代码都不难写(对并发连接没有太大要求,超过1K可以无视1-3种)。但
如果要写得稳定,没有bug,对协议得清楚一点。
服务器无非就是
socket();
bind();
listen();
accept();
read();
send();
close();
客户端更容易了
socket;
connect();
send();
read();
close();