有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java Android telnet客户端,几秒钟后读取停止

我正在尝试在安卓中实现一个telnet客户端,它将持续从telnet服务器读取数据。我已经通过play store的telnet应用连接到服务器,验证了服务器是否在持续发送数据

现在,我正在尝试创建一个应用程序,使用apache telnetclient在屏幕上显示数据。我已成功连接到telnet服务器,并且能够在5-10秒内读取正确的线路。代码发布在下面

什么有效:

  • 连接到服务器
  • 在流停止之前,阅读一些行5-10秒

问题是:

  • 读数似乎在5-10秒后停止,并挂在readLine()上,没有新数据输入。这是代码的问题吗?任何帮助都将不胜感激

更新:

我试图在安卓4.2.2设备上运行这个。我刚刚在一台新的安卓7设备上试用过,代码按预期运行,我得到了连续的读数。安卓版本中有什么东西会导致这种情况吗

--

这是TestTelnetClient。班级

public class TestTelnetClient extends Activity {

private TelnetClient telnet = new TelnetClient();
private InputStream in;
private PrintStream out;
private String server = "192.168.36.105";
TextView outputView;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    outputView = (TextView)findViewById(R.id.output);
}


public void sendTelnet(View view) {

    TelnetRead telnetRead = new TelnetRead();
    telnetRead.execute();
}


private class TelnetRead extends AsyncTask<String, String, String> {
    @Override
    protected String doInBackground(String... params) {

        try {
            // Connect to the specified server
            telnet.connect(server, 8110);
            // Get input and output stream references

            in = telnet.getInputStream();
            //out = new PrintStream(telnet.getOutputStream());
            BufferedReader r = new BufferedReader(new InputStreamReader(in));
            String aad = r.readLine();
            while (true) {
                publishProgress(aad);
                aad = r.readLine();
            }
            //telnet.disconnect();
            //finish();
            //return aad;
            //return "exit";
        }
        catch (Exception e) {
            e.printStackTrace();
            return e.toString();
        }
    }

    @Override
    protected void onPostExecute(String result) {
        try {
            outputView.setText(result);
            Thread.sleep(10);
        } catch (InterruptedException e) {
            Thread.interrupted();
        }
    }

    @Override
    protected void onPreExecute() {
    }

    //@Override
    protected void onProgressUpdate(String... result) {
        outputView.setText(result[0]);
    }
}

这是安卓清单

<?xml version="1.0" encoding="utf-8"?>

<uses-permission 安卓:name="安卓.permission.INTERNET"/>

<application
    安卓:allowBackup="true"
    安卓:icon="@mipmap/ic_launcher"
    安卓:label="@string/app_name"
    安卓:roundIcon="@mipmap/ic_launcher_round"
    安卓:supportsRtl="true"
    安卓:theme="@style/AppTheme">
    <activity
        安卓:name=".TestTelnetClient"
        安卓:screenOrientation="portrait">
        <intent-filter>
            <action 安卓:name="安卓.intent.action.MAIN" />

            <category 安卓:name="安卓.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>


共 (0) 个答案