问题:
Udp传文件和长字符串,需要分批传,但是Udp不是面向连接的,服务端接收文件,如果多个客户端都在往该服务器传文件,不知道是哪个客户端发送过来的,那怎么才能正确判断是哪个客户端发过来的,把传过来的文件数据包存储到相应的地方呢?Tcp是面向连接,所以服务器每接到一个新的socket,服务端会单独派发一个socket,与这个客户端通信,可以一次性接完该客户发的文件再断开连接.
但是我有个需求是用udp发文件,所以就遇到了上述问题,不能区分是哪个客户发来的文件数据,不知道有没有什么好的解决方案,谢谢
答案:-------------------------------------------------------------------------------------
Num1:
UDP也能区分数据包是哪个IP传过来的啊
用IP区分,写入不同的数组,不就好了
你也可以像tcp一样,动态创建一些类,把这些类放到集合里,类里面放你的字符串数组
然后判断IP,把数据扔进对应的类里去
Num2:
UDP不是可靠的协议(可以丢失,可以乱序)。
要用UDP来可靠的传输文件,需要你自己进行一系列的处理(比如重发,编序,限速等等)。相比之下‘区分客户’微不足道。
如果你想提高,用UDP来进行可靠传输是一个很好的练习。
如果你只想传输文件,建议你用TCP。
Num3:
你客户端对发出的每一帧数据做一层封装,每个客户端生成一个唯一性标识包含在数据包中,服务端根据这个唯一性标识来区分不同客户端。