Curretly我正在开发一个项目,我正在使用一个小型的C应用程序,我发现它可以将视频流式传输到HTML5-GUI。
I found the source code on this blog
对于一些基本的东西,这段代码工作正常。我唯一想改变的是从另一个文件中读取视频文件的文件大小。因此我在C:
中读取文件char file_buf[32];
input = fopen("size.dat", "r");
fgets(file_buf, 32, input);
num_chunks = atoi(file_buf);
videosize = (num_chunks-1)*1024;
fclose(input);
printf("videosize: %d",videosize);
现在,我收到一个“错误的文件描述符”错误,即使我不替换其他任何代码。这有什么问题?
编辑:越来越多地测试应用程序,错误似乎很随机....任何想法?
Edit2:应该接受套接字时发生错误。代码看起来像这样:
if((socketfd = socket(AF_INET,SOCK_STREAM,0))==-1){
printf("Socket creation failed!\n");
}
printf("Socket Creation: %s\n",strerror(errno));
bzero(&sockserv,sizeof(sockserv));
sockserv.sin_family = AF_INET;
sockserv.sin_addr.s_addr = INADDR_ANY;
sockserv.sin_port = htons(8080);
if(bind(socketfd,(struct sockaddr *)&sockserv,sizeof(sockserv))<0)
{
printf("Error binding the socket\n");
}
printf("Socket Bind: %s\n",strerror(errno));
if(listen(socketfd,1) == -1){
printf("Listening to Socket failed \n");
}
printf("Socket Listen: %s\n",strerror(errno));
clientfd = accept(socketfd,(struct sockaddr*) &sockclient,&clientsocklen);
if(clientfd < 0){
printf("Accepting Socket failed!\n");
}
那里可能出现什么问题?
祝你好运, PG
答案 0 :(得分:0)
我猜您的问题是由于重新启动应用程序时绑定地址未正确重用。看看SO_REUSEADDR
选项。具体来说,您应该使用bind()
在<{1}}之前设置它。