socket fdopen问题

caoshufengcao caoshufengcao 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

#include <stdio.h>
#include <stdlib.h>
#include <netinet/in.h>
#include <unistd.h>
#include <sys/socket.h>
#include <string.h>
#include <fcntl.h>

int main(void) {
struct sockaddr_in sin;
struct sockaddr_in cin;
int lfd;
int afd;
FILE * fp;
socklen_t len;
char buf[400];
bzero(&sin,sizeof(sin));
sin.sin_family = AF_INET;
sin.sin_port = htons(8000);
sin.sin_addr.s_addr = INADDR_ANY;
lfd = socket(AF_INET,SOCK_STREAM,0);
if(lfd < 0) {
perror("socket");
exit(1);
}
if(bind(lfd,(struct sockaddr *)&sin,sizeof(sin)) == -1) {
perror("bind");
exit(1);
}
listen(lfd,10);
while(1) {
bzero(buf,400);
afd = accept(lfd,(struct sockaddr *)&cin,&len);
if(afd < 0) {
perror("afd");
exit(1);
}
printf("错在哪?\n");
fp = fdopen(afd,"a+");
fgets(buf,400,fp);
printf("%s\n",buf);
fclose(fp);
close(afd);
}
return EXIT_SUCCESS;
}



每次加上

fp = fdopen(afd,"a+");
fgets(buf,400,fp);
printf("%s\n",buf);

这几行,我设置断点,居然在:
afd = accept(lfd,(struct sockaddr *)&cin,&len);这一行出错:
运行结果:
afd: Invalid argument

如果不加这几行,就不报错?为什么?求解
...全文

相关推荐

评论 6
收藏 已收藏
分享
返回顶部
caoshufengcao
C语言 70,039 成员 243,237 内容