我现在用了几个小时的搜索,但找不到符合我问题的答案。我只想在PC和Android设备之间创建TCP网络连接。从Android到PC发送数据(比方说一个简单的字符串)实际上可以毫无问题地使用Socket和ServerSocket。 但是,从PC向Android发送数据不起作用。没有收到任何东西。这是代码:
Android设备上的服务器:
try {
ServerSocket serverSocket = new ServerSocket( 1234 );
//tell logcat the server is online
Log.d("TCP", "C: Server Online...");
while ( true ) {
Socket client = serverSocket.accept();
BufferedReader in = new BufferedReader( new InputStreamReader( client.getInputStream() ) );
String input = in.readLine();
// Do what ever you want with input String
client.close();
}
} catch ( Exception e ) {
Log.d( "TCP", "C: " + e );
}
PC上的客户:
try {
InetAddress serverAddr;
try {
serverAddr = InetAddress.getByName(IPAdresse);
socket = new java.net.Socket(serverAddr,portAdresse);
socket.setSoTimeout(1000);
}catch (ConnectException e) { /*e.printStackTrace();*/ }
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
out.println(nachricht);
socket.close();
}catch (SocketException e) {
// e.printStackTrace(); 试试{socket.close(); } catch(例外e1){}
}catch (IOException e) {
// e.printStackTrace(); 尝试{socket.close(); } catch(例外e1){}
}catch (NullPointerException e) {
// e.printStackTrace(); 试试{socket.close(); } catch(例外e1){/ > 1.printStackTrace(); /}
}
我完全不知道为什么它不起作用。我想我的Android代码或Android设备中的某些设置存在问题。也许有人已经遇到了同样的麻烦和适合我的灵魂。会帮助很多。 感谢
答案 0 :(得分:0)
更改此行:
PrintWriter out = new PrintWriter( new BufferedWriter( new OutputStreamWriter(socket.getOutputStream())),true);
到此:
PrintWriter out = new PrintWriter(socket.getOutputStream(), true);
在您的PC客户端上查看它是否有效。
答案 1 :(得分:0)
我可以想到这里可能发生的一些事情:
对于这样的问题,我在使用Wireshark嗅探数据时输入了大量的打印语句或单步执行代码。