Linux环境编程
APUE
摩霄志在潜修羽
骐骥一跃,不能十步。驽马十驾,功在不舍。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
server端进程池的实现(并发服务器)
什么是进程池在这里引用另一个博主 青城山小和尚 的关于线程池的图,进程池与线程池类似。假设一种情况,当多个客户端的请求同时到达服务器,如果采用单线程/进程的方式,服务端就会依次处理每个客户的请求,此时其他客户将进入等待状态,直到服务端响应完请求,才会接着处理下一个任务。这会导致客户端时间过长,性能低下。考虑并发的情况,可以采用多进程/线程的方式解决上述问题。也就是说,服务端的主线程只是用来监听客户请求,fork出的子进程用来处理请求,多进程并发处理,使得效率更高。静态进程池套接字实现设置固定进程池原创 2021-02-22 14:00:41 · 469 阅读 · 0 评论 -
socket——流式套接字编程实例及注意事项
流式套接字基本操作步骤C端(主动端)获取socket给socket取得地址(可省)发送连接收发消息关闭S端(被动端)获取socket给socket取得地址将socket设置为监听模式接受连接收发消息关闭...原创 2021-02-21 18:33:38 · 913 阅读 · 0 评论 -
套接字选项—设置多播/组播和广播
函数int getsockopt(int sockfd, int level, int optname, void *optval, socklen_t *optlen);int setsockopt(int sockfd, int level, int optname, const void *optval, socklen_t optlen);【注】以上几种消息发送方式均需注册套接字选项,不能直接向诸如"255.255.255.255"的广播地址发送消息。以组播为例,D类IP地址用于多点广播原创 2021-02-21 11:15:45 · 598 阅读 · 0 评论 -
socket——报式套接字编程实例及注意事项
数据报格式定义注:需要使用__attribute__((packed))取消字节对齐,避免不同端字节对齐方式差异引起的问题。数据报以结构体为单位,流式套接字以字节流为单位进行传输。#ifndef _DGRAM__#define _DGRAM__#define NAME_SIZE 128struct dgram_t { char name[NAME_SIZE]; int chinese; int math;}__attribute__((packed));原创 2021-02-20 13:05:12 · 467 阅读 · 0 评论 -
客户端不需要绑定端口号的原因
因为服务器是时时在监听有没有客户端的连接,如果服务器不绑定IP和端口的话,客户端上线的时候怎么连到服务器呢,所以服务器要绑定IP和端口面客户端就不需要了,客户端上线是主动向服务器发出请求的,因为服务器已经绑定了IP和端口,所以客户端上线的就向这个IP和端口发出请求。这时因为客户开始发数据了(发上线请求),系统就给客户端分配一个随机端口,这个端口和客户端的IP会随着上线请求一起发给服务器,服务收到上线请求后就可以从中获起发此请求的客户的IP和端口,接下来服务器就可以利用获起的IP和端口给客户端回应消息了.总转载 2021-02-19 20:43:35 · 1078 阅读 · 0 评论 -
令牌桶算法——多线程实现
相关注意事项都写在了注释当中#include <stdio.h>#include <stdlib.h>#include <string.h>#include <signal.h>#include <unistd.h>#include <errno.h>#include <sys/time.h>#include <pthread.h>#include "mytbf.h"// typedef v原创 2021-02-15 15:20:45 · 1102 阅读 · 1 评论 -
令牌桶算法——信号量实现
头文件定义mytbf.h#ifndef MYTBF_H__#define MYTBF_H__#define MYTBF_MAX 1024typedef void mytbf_t;mytbf_t *mytbf_init(int cps, int burst);int mytbf_fetchtoken(mytbf_t *, int);int mytbf_returntoken(mytbf_t *, int);int mytbf_destroy(mytbf_t *);#endif原创 2021-02-05 18:10:58 · 563 阅读 · 0 评论 -
Linux下socket多人聊天室
前言由于疫情原因,在家上了一学期的课,本次作业是作为“Linux程序设计”的期末考核而布置的,代替了原本的考试,对于我这种比较喜欢动手的菜鸡来说,很舒服。一、聊天室的实验内容本作业实现一个基于Linux的模拟即时通信系统,要求实现以下功能:1、模拟即时通信系统可以实现多人同时在线聊天功能;2、在线聊天用户登录本系统需输入用户名和密码;3、本系统需能够查询历史聊天记录;4、本系统运行后,需启动一个守护进程,该守护进程记录本系统启动和关闭的时间,每个用户登录和退出时间;(日志)5、需创建本系统的原创 2020-06-23 13:42:14 · 6251 阅读 · 1 评论
分享