/*
达内学习 UC day37 2013-10-23
*/
综合案例:
基于TCP的聊天室
基于CS架构,采用TCP网络通信技术,实现多用户同时登陆服务器进行聊天的一个聊天室。
socket做一个多通信,要用到多线程。
每个客户端只要登陆了服务器,就能发消息,同时也能接受到其他人发送的消息,在聊天的过程中,实际是服务器在分发消息的操作,服务器接受到客户端发过来的消息,然后把这个消息分发给所有连上服务器的客户端。
具体实现;
客户端:
1,客户需要登陆,登陆的时候需要输入一个昵称,无需判断是否重复
2,用户登陆以后链接到服务器 ,进入聊天室
3,用户可以输入聊天信息,也可以收到别人的聊天信息
4,用户可以用某个特殊单词 代表退出聊天室
服务端:
1,启动服务器,开放端口
2,等待客户端链接,每连接上来一个客户端,就启动一个线程
3,在线程中实现与客户端的交互,交互过程:如果有客户端登陆,退出,提交聊天,都应该把这些信息发给所有的客户端
TCP通信相关的函数:
实际编程中,不论是客户端还是服务端,都用send函数向TCP另一端发送消息,用recv函数接受TCP另一端的消息。
send(socket,buf,len,flag) flag=0 阻塞
recv类似send 返回值 >0 表示接受到的大小 <0 出错, = 0 表示断开链接
服务器端编码步骤:
1》创建socket
2》准备网络通信地址 sockaddr_in
3》绑定socket和网络通信地址, bind
4》设置监听 listen 第二个参数是指定同一时间能处理的最大链接数目,如果超过该上限,其他客户端就会受到一个错误码。
5》使用accept函数等待客户连接,函数返回一个新的socket描述符,这个描述符能标识刚连接上来的客户端。
6》为该客户端开启线程,在线程中进行通信交互(收发消息)
客户端:
1》用户输入一个昵称
2》连接到服务器
3》开始进行通信,发送消息和接收消息 用多线程实现。