我正试图将一个简单的字符串从android设备发送到pc。我设法通过wifi发送了字符串(因为是在局域网上),但代码在3g上不起作用。我使用的代码是:
class send extends AsyncTask
{
@Override
protected Object doInBackground(Object... params) {
try {
InetAddress serverAddr = InetAddress.getByName("IP here")
Socket socket = new Socket(serverAddr, 8564);
String message = "sample_message";
try {
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
out.println(message);
} catch(Exception e) {}
finally {
socket.close();
}
} catch (Exception e) {}
return null;
}
}
您的电脑连接在哪里?是NAT后面的局域网吗?您是否使用LAN IP地址作为serverAddr?什么是"这里的IP"?
如果你使用NAT后面的本地网络IP地址,你将永远无法连接。
如果你有路由器/wifi AP,请启用端口转发到你的电脑,并使用ISP提供的公共IP地址作为serverAddr。
您是否尝试过创建类似的DataOutputStream
DataOutputStream dos=new DataOutputStream(socket.getOutputStream());
dos.writeBytes(message + 'n');
代替:
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
out.println(message);