Android - inputStream.read() - 我什么都看不懂

时间:2013-04-28 14:45:14

标签: java android sockets stream inputstream

我从socket读取数据时遇到问题。我试图以不同的方式解决我的问题,我认为现在我的代码是最简单的测试方法。 Android有问题从套接字读取并在此行停止(inStream.read())。 10秒后(socket.setSoTimeout)我有一条消息-------错误:null。我想读取任何数据(0-255)或-1,但没有发生任何事情。在PHP(在我的服务器上,我的代码)和PC(不是我的应用程序)一切都很好。我该怎么办?

这是我的第一篇文章,所以我很抱歉可能出现的错误。谢谢你的帮助!

try{
    socket      = new Socket( "192.168.0.150", 502 );
    socket.setSoTimeout( 10000 );

    outStream   = new DataOutputStream( socket.getOutputStream() );
    inStream    = new DataInputStream( socket.getInputStream() );

    System.out.println("----------" + outStream);
    System.out.println("----------" + inStream );

    outStream.write( 0x01 );
    outStream.write( 0x03 );
    outStream.write( 0x10 );
    outStream.write( 0x00 );
    outStream.write( 0x00 );
    outStream.write( 0x04 );
    outStream.write( 0x40 );
    outStream.write( 0xC9 );

    outStream.flush();
    System.out.println("----------ok 1");

/////////////////////////////               

//  Thread.sleep( 50 );
    System.out.println("----------Test1: " + socket.isConnected() );
    System.out.println("----------Test2: " + socket.isInputShutdown() );

    int dat = inStream.read();
    System.out.println("----------ok2: " );
} catch( Exception e ){
    e.printStackTrace(); // <-- edit
    System.out.println( "----------Error: " + e.getMessage() );
}


------------

    <uses-permission android:name = "android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name = "android.permission.UPDATE_DEVICE_STATS" />
    <uses-permission android:name = "android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name = "android.permission.WAKE_LOCK" />
    <uses-permission android:name = "android.permission.INTERNET" />

- 编辑 -

我的日志:http://codepaste.net/eapot2

2 个答案:

答案 0 :(得分:0)

如果你有一个读取超时,显然对等方没有发送任何内容。

NB'没有任何反应'与“Android崩溃”不同。不要滥用标准术语。

答案 1 :(得分:-1)

将端口更改为1024-65565。通常不允许使用端口502.