zoukankan      html  css  js  c++  java
  • Socket 错误总结

    错误

    因为并没有搞清楚accept函数的使用,所以导致不停的发送失败,同时还不知道错误在哪里,无意中看见errno这个库,可以记录错误的原因,才知道原因在于没有用客户端的套接字进行接收数据,而这个客户端的套接字可以通过accept函数返回,但是我什么都没有处理!

    看一下accept的函数吧

    int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
    

    accept函数的第一个参数为服务器的socket描述字,第二个参数为指向struct sockaddr *的指针,用于返回客户端的协议地址,第三个参数为协议地址的长度。如果accpet成功,那么其返回值是由内核自动生成的一个全新的描述字,代表与返回客户的TCP连接。

    所以我

    将其封装成两个重要的函数,分别是服务器接收到客户端,客户端连接服务端这两个函数,这两个实现了服务端和客户端的功能~

    /**
     * 返回接收的客户端
     */
    TCP* TCP::accept_client(Address& naddress) {
        this->tcreate();
        this->setAddress(naddress);
        this->bind();
        this->listen();
        SOCKET client = this->accept();
        
        TCP * _client = TCP::createInstance();
        _client->socket = client;
        _client->isClient = true;
        _client->isCreated = true;
        _client->isConnected = true;
        
        this->close();
        
        return _client;
    }
        
    /**
     * 连接服务器
     */
    void TCP::connect_server(Address& naddress) {
        this->tcreate();
        this->setAddress(naddress);
        this->connect();
        this->isClient = true;
        this->isCreated = true;
        this->isConnected = true;
    }
    
    

    关注公众号:数据结构与算法那些事儿,每天一篇数据结构与算法

  • 相关阅读:
    指针数组与数组指针
    209. 长度最小的子数组
    面试题 05.08. 绘制直线(位运算)
    1160. 拼写单词
    88. 合并两个有序数组
    80. 删除排序数组中的重复项 II(On)
    python自定义异常和主动抛出异常
    类的构造方法1(类中的特殊方法)
    python之判断一个值是不是可以被调用
    主动调用其他类的成员(普通调用和super方法调用)
  • 原文地址:https://www.cnblogs.com/George1994/p/6035574.html
Copyright © 2011-2022 走看看