我的代码如下:
private Socket       m_pSocket   = null;
public int Send(byte[] buffer,int offset,int size,SocketFlags socketFlags)
{
   try
   {
       return m_pSocket.Send(buffer,offset,size,socketFlags);
   }
   catch(Exception E) 
   {
      string s = E.Message;
      //这时s的值为:"您的主机中的软件放弃了一个已建立的连接"
   }
}
不知道程序提示这个问题是什么原因啊,我没有再什么地方关闭过Socket呀

解决方案 »

  1.   

    我是在另一个函数中循环调用这个方法,把一个较大的文件流拆分成小数据块来发送!
    //---- Send message --------------------------------------------//
    long totalSent   = 0;
    //msgStrmPeriodOk是内存流
    long totalLength = msgStrmPeriodOk.Length; 
    int unitBytes = 10240;
    while(totalSent < totalLength){
    byte[] dataBuf = new byte[unitBytes];
    int nCount = msgStrmPeriodOk.Read(dataBuf,0,dataBuf.Length);
             //下面调用那上面的方法
    int countSended = Send(dataBuf,0,nCount,SocketFlags.None);
    totalSent += countSended; if(countSended != nCount){
    msgStrmPeriodOk.Position = totalSent;
    }
    }
      

  2.   

    是不是没有指定传输方式?贴段代码参考一下:
    int iLength = textBox2.Text.Length ;
    //获取要发送的数据的长度
    Byte [ ] bySend = new byte [ iLength ] ;
    //根据获取的长度定义一个Byte类型数组
    bySend = System.Text.Encoding.Default.GetBytes 
    ( textBox2.Text  ) ;

    //按照指定编码类型把字符串指定到指定的Byte数组
    int i = stSend.Send  ( bySend ) ;
      

  3.   

    这段代码在发送小于1M的数据时,是可以发送的,但只要大一点的数据,比如4、5M那么就会出错了,是不是由于,数据量大,发送时间长导致Scoket Session超时阿?
      

  4.   

    我也遇到同样的问题
    我觉得可能是缓冲不够用,send又不会自动阻塞.
      

  5.   

    socket好像没有提供设缓冲大小的方法啊
      

  6.   

    我的程序是这样,当i==4时就有Exception了 private int FillSocket(Socket socket, byte[] buffer)
    {
    int count = 0;
    int times = (buffer.Length - 1) / 1024 + 1;
    for (int i = 0; i < times; ++ i)
    {
    int len = buffer.Length - count;
    if (len > 1024) len = 1024;
    byte[] bf = new byte[len];
    for (int j = 0; j < bf.Length; ++ j)
    {
    bf[j] = buffer[count];
    ++ count;
    }
    len = socket.Send(bf);
    if (len < bf.Length) break;
    }
    return count;
    }
      

  7.   

    socket是用这样得到的:Socket = tcpListener.AcceptSocket();
      

  8.   

    Socket so = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
    //
    so .Connect(new IPEndPoint(System.Net.Dns.Resolve(mx.Host).AddressList[0],m_Port));
      

  9.   

    麻烦您知道是什么问题后发个邮件给我号码?
    [email protected]
    谢谢!
      

  10.   

    ibb(ibb),这位兄弟,我知道一定告诉你,大家都查查资料,你知道也告诉我一下:[email protected]
      

  11.   

    Socket so = new Socket(AddressFamily.InterNetwork,SocketType.Stream,ProtocolType.Tcp);
    //
    so .Connect(new IPEndPoint(System.Net.Dns.Resolve(mx.Host).AddressList[0],m_Port));
      

  12.   

    感觉.net 的socket就是不太稳定呀, 我自己写的Socket客户端,接收服务器端的大量数据, 接收到的数据,总是有很多 \n 或者\r的符号. 可实际上呢, 发送的数据只有一个\r 或者 \n的符号.  看来还是加强自己呀,不能指望别人呀.