1.先打开服务端,服务端accept直接返回-1,紧接着read返回bad fd错误
2.打开客户端,connect也是直接返回0, 非法IP也能返回0...
用sudo ufw status查看防火墙确定关闭了。请问是什么原因?
linux socket accept和connect都直接返回,根本没连上
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
6条回答 默认 最新
- Murcy 2017-05-26 07:44关注
const int MAXFD = 20; const int MAXLINE = 100; int main() { int listenfd,connfd,sockfd,maxfd; int nready,i,maxi; ssize_t n; socklen_t clilen; int client[MAXFD]; char buf[MAXLINE]; fd_set rset,allset; for(i=0;i<MAXFD;++i) client[i] = -1; sockaddr_in servaddr,cliaddr; listenfd = socket(AF_INET,SOCK_STREAM,0); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(9878); int bret=bind(listenfd,(sockaddr*)&servaddr,sizeof(servaddr)); cout<<bret<<endl;//bret =0; int lret= listen(listenfd,100); cout<<lret<<endl;//lret = 0; cout<<"server start fd = "<<listenfd<<endl;//listenfd = 3; cout<<inet_ntoa(servaddr.sin_addr)<<" "<<ntohs(servaddr.sin_port)<<endl; for(;;){ clilen = sizeof(cliaddr); connfd = accept(sockfd,(sockaddr*)&cliaddr,&clilen); cout<<"connection from "<<inet_ntoa(cliaddr.sin_addr)<<" port "<<ntohs(cliaddr.sin_port)<<endl; if((n=read(connfd,buf,MAXLINE))<0){ cout<<strerror(errno)<<endl; exit(0); }else if(n==0){ cout<<"finish"<<endl; close(connfd); }else write(connfd,buf,n); } return 0; }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 关于#python#的问题:求帮写python代码
- ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
- ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
- ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
- ¥15 perl MISA分析p3_in脚本出错
- ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
- ¥15 ubuntu虚拟机打包apk错误
- ¥199 rust编程架构设计的方案 有偿
- ¥15 回答4f系统的像差计算
- ¥15 java如何提取出pdf里的文字?