日期:2014-05-16  浏览次数:20706 次

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();