Java(Android)中socket.io的文件描述符是什么?

3

我正在创建一个程序来记录屏幕并使用套接字将数据通过套接字发送到服务器。我已经成功地在我的sd卡上实现了它,但是如何从Socket.io库中创建一个套接字? setOutputFile要求文件描述符。socket.io中的文件描述符在哪里?

Socket.io代码:

try {
            socket = IO.socket("http://192.168.0.105:3000");
            socket.connect();
// works

        } catch (Exception e) {
            e.printStackTrace();
        }

现在来谈谈MediaRecorder:
mMediaRecorder.setVideoSource(MediaRecorder.VideoSource.SURFACE);
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
// ... some more props...
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
mMediaRecorder.setOutputFile(NEED A FILE DESCRIPTOR HERE);

我该如何处理这个问题?请帮忙!

2个回答

3
您可以使用以下方法提取套接字的文件描述符:
ParcelFileDescriptor.fromSocket(socket).getFileDescriptor(); 

Source: android-developers


ParcelFileDescriptor.fromSocket需要java.net.Socket,socket.io创建了io.socket.client.Socket。我正在使用这个依赖项来处理Sockets.io:https://github.com/socketio/socket.io-client-java - mehulmpt

0

Mike Jaren 对于使用 ParcelFileDescriptor 的回答并不太正确,因为该方法会创建一个新的文件描述符,反映出原始的文件描述符。 获取套接字正确文件描述符的适用于 Java7+(也支持 Android)的工作方法:

FileDescriptor fd = ((FileInputStream)socket.getInputStream()).getFD();

来源: 其他stackoverflow答案

另外一种获取安卓套接字文件描述符的方法(但比较复杂)可以在这里使用Java反射查看


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接