繁体   English   中英

Android套接字已连接但不发送数据

[英]Android socket is connected but doesn't send data

我正在开发一个Android客户端应用程序,通过普通的TCP Socket与服务器通信,我们假设服务器IP 192.168.1.2和androdi设备IP是192.168.1.3。

我打开套接字,我检查套接字是否已连接(我的结果是真的)然后我写了一个演示文稿消息。

这是我的代码

// scoket setup
Sockets = new Socket(addressToConnect, 2015);
s.setSoTimeout(2500);
setTcpNoDelay(true);

// if i'm connected
if (s.isConnected()) {
    // wrapping streams
    DataInputStream dis = new DataInputStream(s.getInputStream());
    DataOutputStream dos = new DataOutputStream(s.getOutputStream());

    // sending data
    String presentationMessage = "Presentation message content--- TERM";
    dos.write(presentationMessage.getBytes("UTF-8");
    dos.flush();

    // buffers
    byte[] readBuffer = new byte[4096];
    StringBuffer responseBuffer = new StringBuffer();

    // read data until command terminator string is found
    boolean readResponse = true;
    while (readResponse) {
        int dataBufferLength = dis.read(readBuffer);
        String chunk = new String(readBuffer, 0, dataBufferLength, "UTF-8"));
        responseBuffer.append(chunk);
        readResponse = ! chunk.endWith("--- TERM");
    }

    // Process data here
} else {
    // Notify missing connection here
}
// here i close the socket

当我执行这段代码时,执行似乎就像一个魅力,直到第一次读取超时。

使用第三台机器嗅探使用过的WIFI网络即使代码在读取超时之前没有抛出任何异常,我也看不到连接建立和写入的流。

我在manifest中授予了android.permission.INTERNET

是否还有其他权限可以授予? 或者我做错了什么?

在标准Java SE环境中执行相同的代码一切顺利。

我正在测试Nexus 5,Nexus 9和Samsung S3和S4上的代码,该项目与API 14+兼容

编辑:修复了代码示例中的拼写错误

你正在阅读dos和写作dis。 你应该改变这一点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM