Socket 长连接 心跳包

  1.如何知道谁在线?
      Server维护一个list就ok了(存所有人的ip,名字,在线等)
  2.如何让服务器随时能找到你?
   前提:内网机器如果不主动向外发起连接,外网机没法直连内网的,这也是内网机安全的原因之一吧,又因为路由器会把这个关系记录下来,但是过一段时间这个记录可能会丢失 ,所有每一个客户端每隔一定时间就会向服务器发送消息,以保证服务器可以随时找到你,这东西被称为心跳包。
   3.如何跨内网直连
   Nat打洞(难):
   我简单说下原理,有两个客户端A,B ,当然必须有Server啦(他可以随时连接A,B)
   当A想连B时,A就回从Server那要B的ip,然后与B建立连接(第一次不能成功的,因为看红字)。
   这时A告诉Server,我找不到B,你替我告诉他一声,我想与它连接,服务器就告诉B,你给A下一个请帖(B发请求向A)! 
   这时A再向B发起连接就可以成功了(以后就不用server帮忙了)。
   4.如何保证数据的可靠性(难)
   滑动窗口协议,这个一句话两句说不清楚啦,自己google下。
   5是否在线。
     我的设计是每隔40秒客户端把Server中存自己的信息中的在线改为真,而服务器每过45秒就检查这个在线变量是否为真,真的话把他改成假,如果假的话就说明这个人在45秒没有向Server报到=>他网络出现异常了,掉线了,向其它人发这个人的掉线通知。(这么设计原因在于当用户网断了没有发下线通知,我们也能知道他不在线了)
   6文件传输(难)

   把文件读到buf里,然后每次发1024b(当收到接收方确认后再发下一个1024b)。

参考:http://bbs.youkuaiyun.com/topics/270063434

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值