发送大数据包会导致错误地址错误

时间:2012-03-29 13:20:34

标签: c ffmpeg send

我在C.上使用ffmpeg和sdl编写实时网络摄像头流 我的平台是linux。

我的应用程序是基于客户端的服务器。
客户端正在从网络摄像头读取,生成AVPacket,然后发送到服务器。

我的问题是,AVPacket结构有一个名为data的成员,大约是600k 起初,我没有检查send()返回值,
所以,当然数据包未能完全发送。

但是在我检查之后,send()在大数据包的第二次迭代时返回Bad Address错误。
数据包的长度必须正确,因为它是从AVPacket结构提供的。

它之前发送了2个AVPacket成员,因此服务器已启动并正常运行。

有问题的部分:

    int send_video_data(video_client_t *client, void* buf, int length)
    {
        int rc;

        while (length > 0)
        {
           if ((rc = send(client->sockfd, buf, length, 0)) == -1) {
                     perror("failed sending data to server");
                     exit(1);
            }

            length-=rc;
            buf+=rc;
        }

        return 0;

    }

任何人都有任何想法为什么它不起作用?
先谢谢!

1 个答案:

答案 0 :(得分:0)

好的,我明白了。
问题在于AVPacket。

不知怎的,大小不正确(maby beacuse video for linux)
所以我解码数据包并再次对其进行编码,现在它正在运行。