我在4.3 JellyBean
上运行的Google Nexus平板电脑上运行了一个应用,该平板电脑连接到server(IP 50.30.233.162)
。该应用程序无法连接到服务器并将错误消息显示为“主机无法访问”。
我检查了 - >来自应用的InetAddress.getLocalHost().toString();
,它会显示“localhost/127.0.0.1
”但设备的实际IP为“50.20.32.225
”
我还给了权限
<uses-permission android:name="android.permission.INTERNET/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE/>
我真的被困住了,任何帮助都会很棒。
公共类MainActivity扩展了Activity {
Socket socket = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String serverAddress = "50.30.233.162";
new Connecting().execute(serverAddress);
}
private class Connecting extends AsyncTask<String,Integer,String>{
protected String doInBackground(String... serverAdd) {
String serverAddress = serverAdd[0];
try {
EditText editText = (EditText) findViewById(R.id.edit_message);
editText.setText(InetAddress.getLocalHost().toString());
int serverPort = 5789;
socket = new Socket(serverAddress, serverPort);
} catch (UnknownHostException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// TODO Auto-generated method stub
return null;
}
}
这是我的服务器代码
公共类服务器{
/**
* @param args
*/
public static void main(String[] args) {
try {
// TupleSpaceServer tupleServer = new TupleSpaceServer();
ServerSocket server = null;
Socket client = null;
String serverIpAdd = null;
int portAdd;
serverIpAdd = InetAddress.getLocalHost().toString();
String[] serverAdd = serverIpAdd.split("/");
serverIpAdd = serverAdd[1];
portAdd = 5789;
System.out.println("Server is now online");
System.out.println("Server IP Address: " + serverIpAdd);
System.out.println("Port Address: " + portAdd);
server = new ServerSocket(portAdd);
while (true) {
client = server.accept();
System.out.println("Client Connected Address: "
+ client.getInetAddress());
// new Thread(new SessionThread(client, tupleServer)).start();
server.close();
}
} catch (IOException e) {
System.err.println(e);
}
}
}
服务器现已上线 服务器IP地址:50.30.233.162 港口地址:5789
答案 0 :(得分:0)
这里没有什么明显错误,这可能是一个网络问题。
我首先在服务器端使用tcpdump或wireshark来查看连接是否确实存在。
答案 1 :(得分:0)
好吧,我想出了问题。这是路由器问题。我的路由器阻止了设备之间的通信。我无法弄清楚必须要做的路由器的变化,但我切换到另一台路由器,现在一切正常。
暂时我会坚持使用第二台路由器,而不是详细介绍旧的路由器。