首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    初识Linux · TCP基本使用 · 回显服务器

    对于listen来说,让服务器进入listen状态,就相当于告诉别人,我准备好了,可以开始准备连接了,使用到的API是listen: 它的参数是sockfd和backlog,对于sockfd是我们创建的套接字...这里的难点是:如何理解socket返回的sockfd和accept返回的sockfd?...对于socket返回的sockfd,我们把它是作为listen的参数使用的,意在告诉别人我这个服务器已经就绪了,可以开始连接了,那么socket返回的sockfd就像是餐馆本体,进行外部的连接,对于accept...TCP是面向连接的,那么双方经过了三次握手,获取到了对应的sockfd,不要忘了sockfd本质上是文件描述符,所以有了文件描述符,双方是可以直接使用read write进行文件读写的。...); // 孙子进程执行 exit(0); } // ::close(sockfd); else { // father ::close(sockfd

    22100

    【计网】实现reactor反应堆模型 --- 处理数据发回问题 ,异常处理问题

    把一个sockfd 托管给 select poll epoll,原因sockfd上事件没有就绪,还是事件就绪了?当然是不就绪的时候托管给EPOLL。...默认sockfd新建的情况下,读事件不是就绪的,因为输入缓冲区没有数据,所以读事件要常添加到epoll中托管 默认sockfd新建的情况下,写事件是就绪的,因为输出缓冲区没有数据,所以写事件默认是直接写的...IsConnExist(sockfd)) return; LOG(INFO, "sockfd: %d quit , 服务器释放资源\n", sockfd);...// 在内核中移除sockfd关心 EnableConnectionReadWrite(sockfd, false, false); _epoller->DelEvent...delete _conn[sockfd]; _conn.erase(sockfd); } 经过这个处理,出现异常的连接,就直接别删除了。

    28210

    【计网】基于TCP协议的Echo Server程序实现与多版本测试

    bind()的作用是将参数 sockfd 和 myaddr 绑定在一起, 使 sockfd 这个用于网络通讯的文件描述符监听 myaddr 所描述的地址和端口号; struct sockaddr *是一个通用指针类型...绑定成功之后就可以通过sockfd进行写入与读取了。...对于子进程:关心sockfd, 不关心listensock,所以对于子进程需要关闭listensock 对于父进程:关心listensock,不关心sockfd,所以对于父进程需要关闭sockfd 为什么父进程要关闭...sockfd,不然一直创建会导致sockfd一直减少,浪费资源 子进程还会创建子进程,就是孙子进程,我们不进行任何处理,那么这个孙子进程就变成了孤儿进程,系统自己领养进行运行,而父进程仍在源源不断的创建新的子进程...::close(sockfd); waitpid(id, nullptr, 0); 测试结果: 测试成功!

    48510
    领券