小弟以前是从事J2ee开发的,很少接触底层的东西,最近用C#开发一个C/S构架的程序,客户端和服务端需要传输一些文字做用户名密码验证,还有就是传输一些100兆左右的大文件。我是用的socket,验证的文字是转换成byte,用socket来send,服务器开线程处理每一个请求。客户端传送方式:
byte[] buffer = new byte[131072];
FileStream recZipFile = File.OpenRead("文件名");
try
   {
      while (r > 0)
        {
             r = recZipFile.Read(buffer, 0, buffer.Length);
             socket.SendTo(buffer, r, SocketFlags.None, server);
         }
catch (IOException ioe)
         {
             MainForm.alert(ioe.ToString());
         }服务端也是这样接收。正常网络状态下是没有问题的。
但是我和我老板的机子一个是电信,一个是联通,网络状态不好,就经常出现文件无法传输用360监控网速,根本就没有网速。无法传送。不知道怎么回事。有没有高手能告诉我这是什么原因造成的或者解决办法。。
如果有其他的通信方式,比如框架什么的,也请告知,小弟只精通java对C#一知半解,望各位高人指点!!!跪谢!

解决方案 »

  1.   

    最简单的方法是用IIS好处理
    你要是用socket,要写发送端和接受端。你这个不行。你这只是发送没有接受,再说发送好像不太对呀。
    QQ:2353394024我现在也在做这块,我自己写了发送和接受。加我可以讨论一下。
      

  2.   

    "精通"java的?socket的bug不知道分析原因?
      

  3.   

    回2楼,说错了嘛,我只是靠java混饭吃。而已,以后不敢用“精通”这个词了
      

  4.   

    http://download.csdn.net/detail/chenandczh/3661723
    楼主可以去看看
      

  5.   

    只要是互联网都是tcpip。
    socket那是必须的。
    .net的socket有sendfile这一个。
    msdn上看一下怎么用就可以了。
    自己写send比较好一些。
    楼主的方法没错。只是要多开一些。用一个发送肯定会慢。
    注意订好协议。别的没啥。
      

  6.   

    自己写send需要注意哪些呢,从哪些角度考虑?
      

  7.   

     通信不好的时候,就可能有IOException。
     catch到IOException后,光alert还不够,要尝试重新传输啊。
      

  8.   

    我有现成的文件传输接收程序 C#版的 
    是自己写的即时通讯的一部分
    使用了异步读取文件、TcpClient、TcpListener发送
      

  9.   

    楼上,可否给我研究一下,,[email protected]