Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/387.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
Android TCP问题-读取服务器时挂起';s的反应_Android_Tcp_Tcpclient - Fatal编程技术网

Android TCP问题-读取服务器时挂起';s的反应

Android TCP问题-读取服务器时挂起';s的反应,android,tcp,tcpclient,Android,Tcp,Tcpclient,我正在尝试为Android编写客户端,该客户端应该与本地网络上的PC服务器应用程序进行通信。服务器应用程序是我的朋友用C#写的。目前有一个iPhone应用程序正在使用此服务器应用程序,没有任何问题 我有非常简单的TCP客户端代码: 1. Socket s = new Socket(server, port); 2. OutputStream out = s.getOutputStream(); 3. PrintWriter output = new PrintWriter(out); 4.

我正在尝试为Android编写客户端,该客户端应该与本地网络上的PC服务器应用程序进行通信。服务器应用程序是我的朋友用C#写的。目前有一个iPhone应用程序正在使用此服务器应用程序,没有任何问题

我有非常简单的TCP客户端代码:

1. Socket s = new Socket(server, port);
2. OutputStream out = s.getOutputStream(); 
3. PrintWriter output = new PrintWriter(out); 
4. output.println("ACTION=Next&VALUE=0&"); 
5. BufferedReader input = new BufferedReader(new nputStreamReader(s.getInputStream())); 
6. String st = input.readLine(); 
我看过许多TCP实现示例,它们都很相似。很像我上面的代码。当我试图从服务器读取响应时,我的应用程序在第6行冻结。 它不会导致任何错误(无异常),调试器中不会显示任何内容,只是在一段时间后出现超时错误。服务器应该在执行第4行中的操作后返回字符串。 我不明白为什么这个代码挂起。输入不为空(我已经检查过了)。我希望抛出一些异常,或者返回空字符串

那么?我错过了什么?可能是服务器应用程序发送的一些特殊字符有问题,而android无法处理吗?我的舱单需要特别许可吗

我确信我有正确的IP地址和正确的端口号。我可以看到在我的电脑上运行的服务器应用程序


谢谢。

您当然需要清单中的互联网许可

如果是我,我会向服务器添加检测,以便它可以告诉您何时有连接,何时该连接收到数据,何时发送回复。或者在服务器上运行tcpdump

您也可以暂时尝试一个字符一个字符地抓取输入字符,而不是一次抓取一整行


试着弄清楚“对话”进展到什么程度,这样你就可以弄清楚它到底在哪里被卡住了

你当然需要清单中的互联网许可

如果是我,我会向服务器添加检测,以便它可以告诉您何时有连接,何时该连接收到数据,何时发送回复。或者在服务器上运行tcpdump

您也可以暂时尝试一个字符一个字符地抓取输入字符,而不是一次抓取一整行

试着弄清楚“对话”进展到什么程度,这样你就可以弄清楚它到底在哪里卡住了

String st=input.readLine();这个命令是让程序等待读取某个内容,还是直接读取缓冲区中的任何内容。我想你需要继续检查服务器是否有东西。我的意思是,你需要一个无限循环,比如
While(True){
st=input.readLine();
这将检查整个过程中是否有任何内容。如果您不使用它,并且如果String st=input.readLine();命令没有使程序等待,那么您的代码将以不带任何内容的方式结束。

String st=input.readLine();这个命令是让程序等待读取某个内容,还是直接读取缓冲区中的任何内容。我想您需要继续检查是否有来自服务器的内容。我的意思是,您需要一个无限循环,比如
While(True){
st=input.readLine();

这将检查整个过程中是否有任何内容。如果您不使用它,并且字符串st=input.readLine();命令没有使程序等待,那么您的代码将以不带任何内容的方式结束。

Does readLine()等待换行符?服务器应该发送换行符吗?谢谢。这是问题之一。作为消息终止服务器应用程序的作者,使用了序列。结果出现了不止一个问题。在第4行中,我必须将所有的&characters替换为&;,但这并不是唯一的解决方案。似乎PrintWriter添加了一些问题ng到OutputStream,可能是\n字符或类似的内容。服务器不喜欢这样,我的操作被忽略。我尝试了PrintStream而不是PrintWriter,效果很好。readLine()是否等待换行符?服务器应该发送换行符吗?谢谢。这是问题之一。作为消息终止服务器应用程序的作者,使用了序列。结果出现了不止一个问题。在第4行中,我必须将所有的&characters替换为&;,但这并不是唯一的解决方案。似乎PrintWriter添加了一些问题ng到OutputStream,可能是\n字符或类似的内容。服务器不喜欢这样,我的操作被忽略。我尝试了PrintStream而不是PrintWriter,效果很好。我设置了该权限。如上所述,最糟糕的部分是服务器忽略了我的消息,没有发送任何响应。当我设法获取某些信息时作为回应,我能够计算rest。我将查看tcpdump程序。我以前从未做过类似的工作。如果我以前知道它,那将非常有用。谢谢。你是否解决了这个问题,然后你必须指定问题并给出调整和回答,请我面临相同的问题,先生,请尽快回复我,我正在等待你的答复有价值的回复提前感谢我设置了该权限。如上所述,最糟糕的是服务器忽略了我的消息,没有发送任何响应。当我设法得到响应时,我能够理解rest。我将查看tcpdump程序。我以前从未做过类似的工作。如果我以前知道这一点,那将非常有用谢谢。如果你解决了这个问题,那么你必须说明问题并给出答案,请回答。我面临同样的问题,先生,请尽快回复我。我正在等待你宝贵的答复。提前谢谢