libssh我怎么知道是否有数据要读?

时间:2016-07-24 06:52:17

标签: ssh libssh

我正在使用libssh 在调用ssh_channel_write之后,我必须知道是否有要读取的数据。 (但我不想检索数据。
如果没有数据要读(例如,10秒后),我会再次拨打ssh_channel_write ssh_channel_readssh_channel_read_nonblocking都不能这样做。 (并使用SSH_READ_PENDING检查ssh_get_status也不起作用。)
有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:1)

这是NonBlocking ......

使用ssh_select()函数。它与常规select()非常相似,但使用通道而不是套接字。

  

int ssh_select(ssh_channel * channels,ssh_channel * outchannels,                    socket_t maxfd,fd_set * readfds,struct timeval * timeout);

例如,单通道实现:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    cam1 = Camera.open();
    btn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            if ( isOn ) {
                params.setFlashMode(Camera.Parameters.FLASH_MODE_OFF);
                cam1.getParameters(params);
                cam1.stopPreview();
                isOn = false;
                btn.setBackground(R.drawable.red_power_button_clip_art_9034);
            } else {
                params = cam1.getParameters();
                params.setFlashMode(Camera.Parameters.FLASH_MODE_TORCH);
                cam1.getParameters(params);
                cam1.stopPreview();
                isOn = true;
                btn.setBackground(R.drawable.green_power_button_clip_art_9023);


            }