可以考虑直接用socket,不用流来做,不知道能不能快点,Socket sckt=new Socket(AddressFamily.InterNetwork,
SocketType.Stream,ProtocolType.Tcp);byte[] toData=Encoding.GetEncoding("gb2312").GetBytes(someString);
n=toData.Length;
for(int i=0;i<n; )
    i+=sckt.Send(toData,i,n-i,SocketFlags.None);

解决方案 »

  1.   

    好像不行,有以下提示的:
    其他信息: 由于套接字没有连接并且 (当使用一个 send 调用发送数据报套接字时) 没有提供地址,发送或接收数据的请求没有被接受。
      

  2.   

    对不起,我的代码是临时写的,没调试就贴上了发送之前应该调用connect操作,你还是看一下文档吧,呵呵,再一次道歉你说的速度慢是指本地执行的速度慢还是网络传输的速度慢?
      

  3.   

    tcpc=new TcpClient(HostIP,HostPort);
    tcpc.Connect(HostIP,HostPort);
    NetworkStream nts=tcpc.GetStream();
    if(netStream.CanWrite)
    {
       TcpSendData="您好!!!";
       Encoding encode = Encoding.GetEncoding("gb2312");
       Byte[] toData=Encode.GetBytes(TcpSendData.ToCharArray());
       nts.Write(toData,0,toData.Length);
       nts.Flush();
    }
    试一下...
      

  4.   

    这个问题我也遇到过,下载的时候没有问题,9M/s,但上传就不行了,send的时候只有80k/s。
    当时下载和上传的缓冲区开得是一样大的,都是1024,但是上传满足不了要求后来没办法,将上传的缓冲区改大,当它到9M/s的时候,大约是10000。BTW,我是用的异步的socket写的你试试改大缓冲区,也许会好起来的
      

  5.   

    TcpClient内部使用了同步Socket,当然慢了,而且不放在一个线程中作的话,还会导致阻塞。所以,你可以用异步Socket来做。调用异步方法BeginConnect,BeginRead,BeginSend等等,再结合多线程或者线程池。具体你自己看看SDK文档了,都有的。