38,UC(17)

/*
 达内学习 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》开始进行通信,发送消息和接收消息 用多线程实现。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值