服务端:
Socket handler = listener.Accept();
string data = null;
while (true) 
{
bytes = new byte[1024];
int bytesRec = handler.Receive(bytes);
data += Encoding.UTF8.GetString(bytes,0,bytesRec);
if (data.Length>0) 
{
break;
}客户端:
ipHostInfo = Dns.Resolve(this.serverIP);
ipAddress = ipHostInfo.AddressList[0];
remoteEP = new IPEndPoint(ipAddress,this.port);
sender = new Socket(AddressFamily.InterNetwork,SocketType.Stream, ProtocolType.Tcp );public string ReceiveSendMessage(string sendmessage)
{
byte[] bytes = new byte[5000];
byte[] msg = Encoding.UTF8.GetBytes(sendmessage);
int bytesSent = sender.Send(msg);
int bytesRec = sender.Receive(bytes);
string receive=Encoding.UTF8.GetString(bytes,0,bytesRec);
return receive;
}
主要就是这些代码.我在调用ReceiveSendMessage方法的时候调用1次没问题,第2次再调用就提示错误:
您的主机中的软件放弃了一个已建立的连接.怎么解决法?高手出来帮帮我,郁闷一天了.

解决方案 »

  1.   

    if (data.Length>0) 
    {
    break;
    }
      

  2.   

    if (data.Length>0) 
    {
    break;
    }
    ///edit
    if (data.Length<0) 
    {
    break;
    }
      

  3.   

    while (true) 
    {
    bytes = new byte[1024];
    int bytesRec = handler.Receive(bytes);
    data += Encoding.UTF8.GetString(bytes,0,bytesRec);
    if (data.Length>0) 
    {
    break;//收到信息后break了,还玩什么:-)
    }
      

  4.   

    while (true) 
    {
    bytes = new byte[1024];
    int bytesRec = handler.Receive(bytes);
    data += Encoding.UTF8.GetString(bytes,0,bytesRec);
    if (data.Length>0) 
    {
    break;//收到信息后break了,还玩什么:-)
    }
    while(true)本来是个无限循环,你在第一次收到信息后就跳出来了,所以说不能收第二次了
      

  5.   

    改完了说是未将对象引用到对象实例
    我用Thread.Sleep(100)方法
    第1个没问题了,第2个还出不来
      

  6.   

    while (true) 
    {
    Socket handler = listener.Accept();
    string data = null;
    while (true) 
    {
    bytes = new byte[1024];
    int bytesRec = handler.Receive(bytes);
    data += Encoding.UTF8.GetString(bytes,0,bytesRec);
    if (data.Length>0) 
    {
    //break;
    //开始处理返回信息
    string[] mA=data.Split("|||".ToCharArray());
    //开始分别处理各项请求
    switch (mA[0])
    {
    case "SendToServerLoadUserList":
    mA[3]=mA[3].Replace("\0","").Trim();
    string userlist=Service.SendUserList(mA[3]);
    byte[] msg = Encoding.UTF8.GetBytes(userlist);
    handler.Send(msg);
    this.label1.Text="成功发送到客户端!";
    break;
    case "SendToServerLoadUserFace":
    mA[3]=mA[3].Replace("\0","").Trim();
    string userface=Service.SendFace(mA[3]);
    byte[] msg3=System.Text.Encoding.UTF8.GetBytes(userface);
    handler.Send(msg3);
    this.label1.Text="已发送给"+mA[3]+"头像信息";
    break;
    }
    Thread.Sleep(10);
    请大家看下,我按照上面的已经改了,第1次发送接受数据没问题,第2次提示错误:未将对象引用到实例化.第2次我断点测试,发现没有运行case 里面就提示错误了,高手帮我再解决下谢谢
      

  7.   

    我也遇到类似问题,收取第一封邮件时没问题,其他的就不行了。
    http://community.csdn.net/Expert/topic/4717/4717902.xml?temp=.9584772