Try
            Dim client As TcpClient = New TcpClient("127.0.0.1", 2112)
            Dim stream As NetworkStream = client.GetStream()            Dim phoneNums As String() = phone.Split(",")
            For Each phoneNum As String In phoneNums
                phoneNum = phoneNum.Trim()
               If String.IsNullOrEmpty(phoneNum) Then
                    Continue For
                End If                Dim data As Byte() = Encoding.GetEncoding("gb2312").GetBytes("M=" + phoneNum + ",I=" + msg + vbCr)

                stream.Write(data, 0, data.Length)                 data = New [Byte](256) {}                 Dim responseData As [String] = [String].Empty
                 Dim bytes As Int32 = stream.Read(data, 0, data.Length)
                 responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes)                stream.Close()
client.Close()
           Next
        Catch e As Exception
            Response.Write(e.Message)
        End Try这是原始的VB代码运行一切正常。 try{
                TcpClient client = new TcpClient("127.0.0.1", 2112);               phone = phone.Trim();
               if (String.IsNullOrEmpty(phone)) 
                    return; 
               Byte[] data = Encoding.GetEncoding("gb2312").GetBytes("M=" + phone + ",I=" + msg);
                NetworkStream stream = client.GetStream();                stream.Write(data, 0, data.Length);                 data = new Byte[256];                 String responseData= String.Empty;                 int bytes= stream.Read(data, 0, data.Length);
                 responseData = System.Text.Encoding.ASCII.GetString(data, 0, bytes);
                stream.Close();
client.Close();
 
            }
       catch(Exception e)
            {
            Response.Write(e.Message);
       } 这是我改的C#代码,phone换成了单个的号码,不是vb中用逗号分隔的一串了,但是运行之后报,远程主机强迫关闭了一个现有的连接,而且报错之后再运行正确的vb代码也一直报这个错了,除非重启服务端。我想知道我改写的代码问题出在哪里了。分数可以追加TcpClientSockets

解决方案 »

  1.   


    .GetBytes("M=" + phone + ",I=" + msg + "\r");  // vbCR
      

  2.   

    GetBytes("M=" + phone + ",I=" + msg + "\r")
      

  3.   

    ,而且报错之后再运行正确的vb代码也一直报这个错了,除非重启服务端。 
    就是因为你C#的 发送的错误数据,造成服务端接收后数据异常,而你的服务端又没做异常处理,所以服务端的Socket就挂了,此时你再用VB代码去连服务端,当然连不上。只能重启服务端
      

  4.   

    是不是服务器记录了你当前信息,你退出时没有在服务器那移除你的信息,再次连接时就会报错的不一定的,服务端挂了可能性最大。服务端没有做收异常包的处理。。
    那个IP挂掉之后,其他IP使用服务器是正常的,是为什么呢。
    主要服务端我无法控制,所以比较难办。
    我现在自己也在不断尝试。
      

  5.   

    是不是服务器记录了你当前信息,你退出时没有在服务器那移除你的信息,再次连接时就会报错的不一定的,服务端挂了可能性最大。服务端没有做收异常包的处理。。
    那个IP挂掉之后,其他IP使用服务器是正常的,是为什么呢。
    主要服务端我无法控制,所以比较难办。
    我现在自己也在不断尝试。如果其他IP是正常,说明你发的异常包给服务端,后服务端收到异常信息,出错了,没有把相应的IP给移除掉。造成同样的IP重新连接没反应。结论还是服务端没有做这个异常处理,你把这BUG提交给写服务端的人吧。