文件说明: 基本实现了服务与多个客户端实时收发消息。 在服务器端的主进程里分别启用了一个读线程和写线程,主进程负责accept客户端,并将该客户端对应的socket文件描述符存入文件描述符队列中。读线程调用select函数实现了无阻塞的对多个客户端发来的消息进行接收。写线程收集服务器输入终端输入的字符串并发送给指定的客户端。 在客户端中,主进程启动了一个子进程,分别负责数据的接收与发送。
使用方法: 客户端与服务器的 ip 与 端口 在文件中写死,根据需要更改。servSelect对应服务器端,clinSelect对应客户端。启动服务器后,可以依次启动多个客户端与之相连。在客户端中直接输入消息内容并回车即可向服务器发送消息。而在客户端通过输入sendmsgto+客户端name+>+消息内容+回车(实际操纵中没有+)向指定客户端发送消息。
不足与待改进: 1.多进程之间通信做的不够好,容易产生僵尸与孤儿进程。 2.select默认为100个客户端提供代理,若超出这个范围程序将无法运行。 3.代码可读性较差,待改善。