Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TCP:如何在Android客户端从Vb.net服务器获取响应?_Java_Android_Vb.net_Tcp_Tcpclient - Fatal编程技术网

Java TCP:如何在Android客户端从Vb.net服务器获取响应?

Java TCP:如何在Android客户端从Vb.net服务器获取响应?,java,android,vb.net,tcp,tcpclient,Java,Android,Vb.net,Tcp,Tcpclient,这是不可能重复的。本网站上的任何答案都不能充分回答或解决我的问题 我正在尝试通过TCP套接字连接到VB.NET服务器,并在Android应用程序中获得响应。响应总是以字符串形式为空或以字节形式为-1 我必须连接多个平台并获得响应,但目前我只想专注于Android应用程序。也许如果我弄明白了,就更容易转移到其他平台 我无权在VB.NET live server中编辑任何代码。该系统相当陈旧,到目前为止只向其他Windows客户端发送响应 这是我的Android客户端。它位于从mainActivit

这是不可能重复的。本网站上的任何答案都不能充分回答或解决我的问题

我正在尝试通过TCP套接字连接到VB.NET服务器,并在Android应用程序中获得响应。响应总是以字符串形式为空或以字节形式为-1

我必须连接多个平台并获得响应,但目前我只想专注于Android应用程序。也许如果我弄明白了,就更容易转移到其他平台

我无权在VB.NET live server中编辑任何代码。该系统相当陈旧,到目前为止只向其他Windows客户端发送响应

这是我的Android客户端。它位于从mainActivity调用的后台任务中。下面的命令字符串应以字符串形式从服务器返回坐标。一无所获

导入java.io.BufferedReader;
导入java.io.IOException;
导入java.io.InputStreamReader;
导入java.io.OutputStream;
导入java.io.PrintStream;
导入java.io.PrintWriter;
导入java.net.Socket;
导入java.net.UnknownHostException;
公共类客户端{
public static void sendMessage()引发IOException、InterruptedException{
套接字=空;
字符串host=“”;
int端口=;
PrintStream=null;
String命令=”;
试一试{
套接字s=新的套接字(主机、端口);
System.out.println(“已创建套接字”);
//传出流重定向到套接字
OutputStream out=s.getOutputStream();
PrintWriter输出=新的PrintWriter(输出);
println(命令);
output.flush();
System.out.println(“发送命令”);
BufferedReader input=新的BufferedReader(新的InputStreamReader(s.getInputStream());
//读线
System.out.println(“获取响应:”);
字符串st=input.readLine();
System.out.println(“响应:+st”);
//密切联系
s、 close();
}
捕获(未知后异常e){
System.out.println(“不知道主机:+host”);
e、 printStackTrace();
系统出口(1);
}
捕获(IOE异常){
System.out.println(“无法获取连接到:“+主机”的I/O);
e、 printStackTrace();
系统出口(1);
}
}
}
一位开发人员还向我发送了一个VB中的测试客户端,它可以毫无问题地连接、发送和接收

下面是一个VB:NET虚拟服务器项目的类,开发人员发给我,让我看看如何在代码方面设置实时服务器。我可以看到它得到的字符串是unicode,但我不相信VB会知道我的Java代码哪里出错了

当我打开项目并在本地主机上启动服务器时,我无论如何都无法从java客户端连接到它。然后我用PHP编写了另一个客户端,同样的问题,建立了连接,但没有响应。我下载了一个插座测试软件,但它也可以连接,但没有得到响应

选项显式打开
导入系统
导入系统.Net
导入System.Net.Sockets
导入系统文本
导入Microsoft.VisualBasic
导入System.Net.Dns
导入System.Text.Unicode编码
导入系统线程
导入System.Data.SqlClient
公共枚举连接类型
ConstantConnection=1
ConnectOnDemand=2
异步连接=3
结束枚举
公共类clsDynaListner
公共tcpServer As套接字
公共TCP客户端作为套接字
作为整数的公共tcpPort
公共tcpBilnr作为整数“已共享,应将其初始化为0
公共线程客户端作为线程
Public LastKontakt As Date=无
Public ConActive As Boolean=False
专用tcpClientEndPoint作为System.Net.IPEndPoint
专用bCommandLength(15),bReplyLength(15)作为字节
私有iCommandLength,iReplyLength为整数
私有sReplyLength作为字符串
Private sCommand,以字符串形式提交
私有的commandBytes()作为字节
Private theReplyBytes()作为字节
私有常量AsyncMaxBytes为整数=600000'1024
作为字符串的公共共享异步数据=无
Public Sub New(ByVal currenttcport为整数,ByVal theConnectionType为glenConnectionType)
tcpPort=当前tcpPort
tcpClientEndPoint=New System.Net.IPEndPoint(System.Net.IPAddress.Any,tcpPort)
'选择连接类型的大小写
'案例glenConnectionType.ConstantConnection
'ThreadClient=New Threading.Thread(ListenForConstantConnection的地址)
'案例glenConnectionType.ConnectOnDemand
ThreadClient=New Threading.Thread(ListenForConnectOnDemand的地址)
'案例glenConnectionType.AsyncConnection
'ThreadClient=New Threading.Thread(ListenForAsyncConnection的地址)
'结束选择
ThreadClient.Start()
端接头
私有子列表nforconnectondemand()
While(True)
尝试
tcpServer=新套接字(AddressFamily.InterNetwork、SocketType.Stream、ProtocolType.Tcp)
tcpServer.SendBufferSize=TCP\u BUFFER\u SIZE
tcpServer.ReceiveBufferSize=TCP\u缓冲区\u大小
tcpServer.Blocking=True
tcpServer.Bind(tcpClientEndPoint)
tcpServer.Listen(0)
tcpClient=tcpServer.Accept
tcpClient.SendBufferSize=TCP\u BUFFER\u SIZE
tcpClient.ReceiveBufferSize=TCP\U缓冲区\U大小
“看看这个命令会有多大
tcpClient.Receive(bCommandLength)
iCommandLength=CType(Unicode.GetString(bCommandLength),整数)
“把命令带给爸爸
调整数组大小(CommandBytes,iCommandLength+1)
tcpClient.Receive(commandbytes)
sCommand=Unicode.GetString(commandBytes)