c# 用UDP 如何传输 文本文件 ??

解决方案 »

  1.   

    先创建udp socket,然后从文件中读取文本内容保存到byte[]中,发送
    需要发送接收方有一定协议,主要是文件发送开始与结束都有相应标志即可
      

  2.   


    这个我知道,我是想能不能用UDP传输 整个文本文件(而不是提取文本内容)...
      

  3.   

    udp不太好,好是tcp好点
    不过udp也是可以实现的
    把文件分包,发送端发送之前先发送给信息包,包含包大小,分割数量等
    接受端响应后发送端开启线程发包,接收端开启线程接收
    最后收到结束标志后接收端再封包
    这是我自己想的不过没实际做过,只供参考对于三楼的问题用二楼的方法也是可以实现的请大家多指点,集思广益吧,呵呵
      

  4.   

    无论是啥文件 全部吧byte取出来 发送过去就行了 然后在那边拼装起来····
    拼装的时候必须要以byte拼··也就是2进制···不然要出错·····
    给一个我写来玩的吧。。写的差 见笑了  //发送:
      socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
      socket.Connect(ServerIP, 44444);
      byte[] buffer = System.IO.File.ReadAllBytes(@"D:\Test.txt");  // Encoding.Unicode.GetBytes ("FuckFuck");
      socket.Send(buffer);
      //接收
            public Socket socket;
            const int BUFFERSIZE = 1024;
            byte[] buffer = new byte[BUFFERSIZE];
            public Thread receiveThread;
            string _name;
            string _number;
            int index = 0;
            byte[] package;
            public Client(Socket s)
            {
                socket = s;
                receiveThread = new Thread(new ThreadStart(Recevie));
                receiveThread.Start();
            }        void Recevie()
            {
                string tmp = "";
                while (true)
                {
                    try
                    {
                        tmp = "";
                        EndPoint ep = socket.RemoteEndPoint;
                        int len=0;
                        int totalRecive = 0;
                        do
                        {
                            len = socket.ReceiveFrom(buffer, ref ep);
                            tmp += Encoding.ASCII.GetString(buffer, 0, len);
                            totalRecive += len;                    } while (len == BUFFERSIZE);
                        Com.WriteLine("[GetMessage] Length=" + totalRecive.ToString() + " From " + ep.ToString()+"\n"+tmp);
                         
                    }
                    catch
                    {
                        receiveThread.Abort();                }
                }
            }
      

  5.   

    如果是图片文件啥的
       len = socket.ReceiveFrom(buffer, ref ep);
                            tmp += Encoding.ASCII.GetString(buffer, 0, len);
                            totalRecive += len;这里改成加到一个byte[] box里面就行了
    然后
    System.IO.File.WriteAllBytes("xxx\xxx",box)就行了
      

  6.   

    看来用UDP直接传输文本文件 比较麻烦了
    好像ftp可以直接传文件,不知道那个简便、安全一些 ?
      

  7.   

    客户端是wince, wince下不支持流,
    有没有更好的 直接输整个 文本文件 的方法?
      

  8.   

    我觉得最好的方法是用FTP协议,可以把这个协议嵌进程序当中