帮助!我正试图在Android Studio中做一些简单的Java套接字网络,我甚至无法进入。服务器程序似乎工作正常,但Android应用程序客户端崩溃时出现错误“不幸的是InTouch已停止”执行该行:
sock = new Socket("Mark2015jun08", 4415);
我输入的主机名是C:> hostname
命令报告的内容,Windows网络控制面板,当我登录路由器时,它显示在DHCP表中。当我输入“”作为文件说应该打开环回的主机名时,它甚至会崩溃。我已经尝试过调用Socket()
十几种不同的方法,如下面的代码所示。我当然可以使用一些帮助。
谢谢,-Mark
在android客户端程序中,我在onResume()
方法中添加了以下try语句:
try {
//sock = new Socket("Mark2015jun08", 4415);
byte[] ip = {(byte)192, (byte)168, (byte)1, (byte)124};
//sock = new Socket(InetAddress.getByAddress(ip), 4415);
//sock = new Socket(InetAddress.getByName("192.168.1.124"), 4415);
//sock = new Socket("LOCALHOST", 4415);
sock = new Socket("", 4415);
// ommitted logic to set socket timeout and
// open object streams based on sock
} catch (IOException e){
sock = null;
log(e.toString());
}
Windows ipconfig和路由器DHCP表都确认我的IP地址,但我仍然得到相同的错误。三个不同的来源都同意我的主机名,但无论我输入什么字符串的主机名,甚至“”,它都不起作用。我究竟做错了什么?
我在Manifest.xml文件中使用以下权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
这是我在Netbeans中创建的服务器程序,我使用命令C:&gt; cmd.exe
从Windows java -jar intouchserver.jar
窗口运行它。这将在笔记本电脑上运行服务器程序并进入行
sock = serversock.accept();
并完全按照accept()
的文档解释。据我所知,它正在侦听端口4415.(注意:我在此语句之前检查了serversock
:它是非空的。)
package intouchserver;
import ...
public class InTouchServer {
private static ServerSocket serversock;
private static Socket sock;
public static void main(String[] args) {
try {
serversock = new ServerSocket(4415);
sock = serversock.accept();
} catch (IOException e){
System.out.println("Can't establish socket");
System.out.println(e);
System.exit(1);
}
// ommitted logic to open object streams based on sock
// and read and write to them
}
}
答案 0 :(得分:0)
我解决了自己的问题。事实证明,如果Socket()
调用在我放置的onResume()
函数中,那么您会得到一个相当无用的错误消息,但是如果您将Socket()
命令放在onCreate()
中功能你得到一个更丰富的信息:即“主线上的网络”。所以然后将Socket()
调用放入一个线程解决了问题,然后我离开了。非常感谢James K Polk关于logcat的提示。我一直在努力解决那些“应用已经停止”的消息。