![](https://img-blog.csdnimg.cn/20201014180756918.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux网络编程
杨博东的博客
阿里云数据库-NoSQL组,开源贡献者,Valkey Contributor,Jackey Maintainer。
展开
-
Linux&C网络编程————“聊天室”
从上周到现在一直在完成最后的项目,自己的聊天室,所以博客就没怎么跟了,今天晚上自己的聊天室基本实现,让学长检查了,也有好些bug,自己还算满意,主要实现的功能有:登录注册附近的人(服务器端全部在线的人)好友管理(查看所有及在线好友,添加好友,删除好友)聊天(私聊群聊,查看群,建群,申请入群,离线消息)聊天记录的保存服务器的日志处理通过这次写这个简单的ftp聊天室,主要是对自己这一个暑假原创 2015-08-18 23:02:12 · 2607 阅读 · 4 评论 -
深入探索 Linux listen() 函数 backlog 的含义
1:listen()回顾以及问题引入 2:正确的解释 3:实验验证1:listen()回顾以及问题引入listen()函数是网络编程中用来使服务器端开始监听端口的系统调用,首先来回顾下listen()函数的定义: 有关于第二个参数含义的问题网上有好几种说法,我总结了下主要有这么3种:Kernel会为LISTEN状态的socket维护一个队列,其中存放SYN RECEIVED和EST原创 2017-03-05 11:39:50 · 22328 阅读 · 13 评论 -
多进程同时写一个文件会怎样?(待修订)
一、问题还原在多进程的环境下,父子进程同时去写一个文件,例如父进程每次写入aaaaa,子进程每次写入bbbbb,问题是会不会出现写操作被打断的现象,比如出现aabbbaaabb这样交替的情况?二、结论 1:使用write系统调用的情况下,不会出现内容交叉的情况。 2:使用fwriteANSIC标准C语言函数,会出现内容交叉的情况。三、实验过程实验环境:操作系统: RedHat Linu原创 2017-03-18 01:46:10 · 37806 阅读 · 9 评论 -
linux网络编程 IO多路复用 select epoll
本文以我的小型聊天室为例,对于服务器端的代码,做了三次改进,我将分别介绍阻塞式IO,select,epoll .一:阻塞式IO对于聊天室这种程序,我们最容易想到的是在服务器端accept之后,然后fork一个进程或者pthread_create创建一个线程去处理相应的连接,代码如下 :#include<stdio.h>#include<sys/types.h>#include<sys/sock原创 2016-03-05 06:21:06 · 1059 阅读 · 0 评论 -
师生帮手(3)
设计第一版,先不解释,占坑,别人电脑原创 2016-07-31 17:52:52 · 519 阅读 · 0 评论 -
师生帮手(4)
明天,不,今天,现在都过12点了,下午5:30答辩,这是”互联网+”大学生创新创业大赛西安邮电大学50进18的比赛,比赛进入的项目将会被选择参加省赛。飞哥和根儿下午去打印了海报,我还是觉得我们项目明天的讲解会有很多问题。我大概以这个思路讲:1:介绍项目的实施背景 2:难点 3:解决的实际问题 4:未来的规划PPT链接: http://www.yangbodong.cn/XY2016-2-18原创 2016-08-03 00:37:03 · 551 阅读 · 0 评论 -
师生帮手(2)
昨天设计出来了数据的第一版,现在飞哥和根儿正在修改中,两位大神保佑找到问题不要太多吐槽,我要开始设计服务器模型了,请把每一个epoll用正确,这非常重要,采用什么模式呢,ET还是LT。读写的时候细节。UDP(内网负载发送消息)和TCP(工作过程)等,下午服务器交工第一版。放出数据库总体图: 代码DROP DATABASE if EXISTS TSHH;CREATE DATABASE TSHH;原创 2016-07-30 11:04:17 · 720 阅读 · 0 评论 -
师生帮手(1)
一、项目名称:师生帮手二、项目参与人员(当前):杨龙飞(飞哥) 张根(根儿) 卢晓丹(二蛋) 杨博东三、项目类型:一个基于socket通信的用于师生交互的系统。四、项目痛点:1:解决了老师上课点名费时、无法每节课点名、统计效率低下的问题。 2:解决了老师学期末需要手动将学生平时成绩录入教务系统的麻烦。 3:老师在课堂上可以布置随堂练习题,学生完成后自动批阅。 4:每天为老师原创 2016-07-28 22:52:33 · 574 阅读 · 0 评论 -
小白写"半同步半异步"服务器模型踩坑实录(2)
前面说到了我已经测试好了任务队列中的fd是可以正常加入和pop出来的,现在我想我需要做的是将pop出来的fd交给线程池去处理,c++的std::vector和std::thread配合使用应该是非常爽的,于是我就开始先写了一个简单的模型:#include<iostream>#include<vector>#include<thread>#include<unistd.h>#include<s原创 2016-07-28 00:26:06 · 557 阅读 · 0 评论 -
小白写"半同步半异步"服务器模型踩坑实录(1)
我想按照自己的理解写一个”半同步半异步”的服务器模型,和常规的模式相同,分为三层: 最上层:使用epoll监控所有的socketfd,如果某个fd发生IO事件就将其加入中间层的任务队列。 中间层:任务队列,它里面保存发生事件的epoll_fd。 最底层:线程池,如果任务队列中有fd,就用一个线程处理。这个模型非常简单,半同步半异步的含义是:半同步指的是在最上层和中间层之间是同步的原创 2016-07-27 16:40:46 · 924 阅读 · 0 评论 -
connect & send 在三次握手过程中的有趣问题
一、问题回顾面试的时候被问到的问题,原问题是: 1:写一下socket网络编程服务端和客户端常用的函数。 2:如果服务端在listen之后没有accept,那客户端的connect会返回吗?为什么? 3:此时调用send发数据会怎么样?在看下面答案之前,推荐阅读: 深入探索 Linux listen() 函数 backlog 的含义 Socket accept queue原创 2017-04-09 10:12:26 · 2934 阅读 · 7 评论