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
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
.GetBytes("M=" + phone + ",I=" + msg + "\r"); // vbCR
就是因为你C#的 发送的错误数据,造成服务端接收后数据异常,而你的服务端又没做异常处理,所以服务端的Socket就挂了,此时你再用VB代码去连服务端,当然连不上。只能重启服务端
那个IP挂掉之后,其他IP使用服务器是正常的,是为什么呢。
主要服务端我无法控制,所以比较难办。
我现在自己也在不断尝试。
那个IP挂掉之后,其他IP使用服务器是正常的,是为什么呢。
主要服务端我无法控制,所以比较难办。
我现在自己也在不断尝试。如果其他IP是正常,说明你发的异常包给服务端,后服务端收到异常信息,出错了,没有把相应的IP给移除掉。造成同样的IP重新连接没反应。结论还是服务端没有做这个异常处理,你把这BUG提交给写服务端的人吧。