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;
    }
    
    

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

  • 相关阅读:
    S2dao 简单Demo(转)
    Iphone SDK textField 打开和关闭键盘
    s2dao 入门知识2
    Eclipse tomcat Web页面调试
    s2dao 入门知识1
    java 面试
    Iphone SDK ActionSheet 在当前窗口弹出时间选择
    杭电2044
    杭电2076
    杭电2077
  • 原文地址:https://www.cnblogs.com/George1994/p/6035574.html
Copyright © 2011-2022 走看看