Murcy 2017-05-26 07:32 采纳率: 0%
浏览 2788

linux socket accept和connect都直接返回,根本没连上

1.先打开服务端,服务端accept直接返回-1,紧接着read返回bad fd错误
2.打开客户端,connect也是直接返回0, 非法IP也能返回0...
用sudo ufw status查看防火墙确定关闭了。请问是什么原因?

  • 写回答

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里的文字?