我在通过wifi通过TCP将数据从Android客户端发送到桌面服务器时遇到了一些问题。模拟器工作正常,但在实际的手机上,无法建立连接。抛出了“socket not connected”异常。
我已在下面附上我的代码。有什么帮助吗?非常感谢!
//活动中的代码
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.send:
sendMessage();
return true;
/// ...other items
}
}
private void sendMessage() {
String serverAddr = "18.xxx.xx.xxx";
Socket socket = null;
try {
socket = new Socket(serverAddr, 4444); // EXCEPTION HAPPENS HERE
} catch (Exception e) {
//show exception on screen
}
String message = "some message";
try {
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
out.println(message);
} catch (Exception e) {
//show exception on screen
} finally {
socket.close();
}
}
答案 0 :(得分:1)
您的serverAddr不应该是字符串,而应该是InetAddr。 使用InetAddr.getByName(“18.x.x.x”)
答案 1 :(得分:0)
您可以使用以下方法在java中进行异常处理: - http://source.android.com/source/code-style.html#java-language-rules.Hope您可以找到解决方案。
答案 2 :(得分:0)
服务器地址应该是网络中的服务器本地地址。 您还需要配置路由器“PORT FORWORDING”以从端口4444发送所有数据包并将其转发到您的服务器本地IP。电话和服务器电脑也应该连接到同一个WiFi网络。