Android 安卓3g发送字符串
我正在尝试将一个简单的字符串从android设备发送到pc。 我设法通过wifi发送字符串(因为是在局域网上),但代码在3g上不起作用。 我使用的代码是:Android 安卓3g发送字符串,android,network-programming,3g,Android,Network Programming,3g,我正在尝试将一个简单的字符串从android设备发送到pc。 我设法通过wifi发送字符串(因为是在局域网上),但代码在3g上不起作用。 我使用的代码是: class send extends AsyncTask { @Override protected Object doInBackground(Object... params) { try { Ine
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;
}
}
您是否尝试过创建类似的
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);
你的电脑连接在哪里?是NAT后面的局域网吗?您是否将LAN IP地址用作服务器地址?什么是“这里的IP” 如果您在NAT后面使用本地网络IP地址,您将永远无法连接
如果您有路由器/wifi AP,请启用到PC的端口转发,并将ISP提供的公共IP地址用作serverAddr。无论您使用的是wifi还是其他网络类型,这都不重要。您在使用3g时是否遇到任何异常?它似乎没有给出任何异常添加
e.printStackTrace()向每个catch
语句添加code>,并查看它是否在logcat中显示任何Exception
。我在每个catch语句中添加了Toast.makeText(),而不是e.printStackTrace(),因为我是通过导出程序而不是在模拟器上在设备上尝试该程序。这是因为我需要用sim卡测试3g连接,而且eclipse无法将我的设备识别为AVD(我打开了调试模式),因此我无法直接测试,只能通过导出APK进行测试。但是,祝酒词没有显示任何内容。没有任何变化。。。当我点击发送按钮时,没有异常,程序继续运行,但是电脑没有收到任何东西如果我点击按钮,不会立即发生任何事情,但是如果我等待两分钟,可能会更少,程序崩溃了…有什么问题吗?试着在最后一个块中记录异常并将其发布到问题中正如我在@piotr post中所说的,我正在通过将APK导出到设备来尝试该程序,因为Eclipse无法将该设备识别为AVD,我需要尝试3g连接,所以我甚至无法在模拟器上运行它