----------Linux网络/并发编程
文章平均质量分 69
mfcheer
他不停地跑啊跑 就为了追上那个曾经被寄予厚望的自己
展开
-
Nagle算法
纳格算法是以减少数据包发送量来增进TCP/IP网络的性能。它是由约翰.纳格任职于Ford Aerospace时命名。纳格的文件描述了他所谓的“小数据包问题”-某个应用程序不断地提交小单位的数据,且某些常只占1字节大小。因为TCP数据包具有40字节的标头信息(TCP与IPv4各占20字节),这导致了41字节大小的数据包只有1字节的可用信息,造成庞大的浪费。这种状况常常发生于Telnet工作阶段-大部分原创 2016-08-03 16:26:00 · 393 阅读 · 0 评论 -
基于Socket的网络聊天室
from asyncore import dispatcherfrom asynchat import async_chatimport socket, asyncorePORT = 5005NAME = "ChatRoom"class EndSession(Exception):passclass CommandHandler: def unknow(self, session, c原创 2016-08-30 22:41:04 · 2476 阅读 · 1 评论 -
并发和并行的区别
所有的并发处理都有等待,就绪,执行至少三个这样的步骤.所以并发肯定是宏观概念,在微观上他们都是序列被处理的,只不过资源不会在某一个上被阻塞(一般是通过时间片轮转),所以在宏观上看多个几乎同时到达的请求同时在被处理。如果是同一时刻到达的请求也会根据优先级的不同,而先后进入队列排队等候执行。并发与并行是两个既相似而又不相同的概念:并发性,又称共行性,是指能处理多个同时性活动的能力;并行原创 2014-11-30 16:32:20 · 558 阅读 · 0 评论 -
IO复用 select Demo
1 等待键盘输入,输出读入的字节数和读入的内容#include <sys/types.h>#include <sys/time.h>#include <stdio.h>#include <fcntl.h>#include <sys/ioctl.h>#include <unistd.h>#include <stdlib.h>int main(){ char buffer[1111原创 2015-04-02 16:45:21 · 570 阅读 · 0 评论 -
fork之后子进程与父进程关系
#include#include#include#includevoid main(){ char str[6]="hello"; pid_t pid=fork(); if(pid==0) { str[0]='b'; printf("子进程中str=%s\n",str); printf("子进程中str指向的原创 2015-01-17 16:38:43 · 4639 阅读 · 0 评论 -
Socket基本API 总结
套接字建立过程: srever: 1 socket创建套接字 2 bind ip和port 3 listen 4 accept 5 read/write 6 closeclient: 1 socket 2 connect 3 read/write 4 closeint socket(int domain, int type, int protocol);//失败返回-1,成功原创 2015-06-09 22:33:07 · 820 阅读 · 0 评论 -
Linux生产者消费者模型--基于线程条件变量
生产者和消费者之间用中间类似一个队列一样的东西串起来。这个队列可以想像成一个存放产品的“仓库”,生产者只需要关心这个“仓库”,并不需要关心具体的消费者,对于生产者而言甚至都不知道有这些消费者存在。对于消费者而言他也不需要关心具体的生产者,到底有多少生产者也不是他关心的事情,他只要关心这个“仓库”中还有没有东西。这种模型是一种松耦合模型。C代码:#include <stdio.h>#include原创 2016-09-13 02:01:35 · 606 阅读 · 0 评论 -
Linux 进程控制
进程1 进程创建fork()函数创建子进程。 “调用一次,返回两次”#include <stdio.h>#include <sys/types.h>#include <unistd.h>#include <stdlib.h>int main(){ pid_t pid; if ((pid = fork())<0) { printf("error\n")原创 2016-05-11 18:36:10 · 440 阅读 · 0 评论 -
认识与学习bash
变量的显示与设置变量的显示: echo $[变量名] 修改变量名: 用等号“=” 变量名只能由字母数字组成,且只能字母开头。取消变量: unset 变量名 环境变量功能: env查看环境变量及说明 随机数变量RANDOM set查看所有变量(包括环境变量) 如果想在子进程使用自己定义的环境变量,使用”export 变量名“。显示语系变量:locale 变量的读取,数组和原创 2016-03-30 21:55:47 · 705 阅读 · 0 评论 -
Linux 进程间通信
1 pipe管道子进程写,父进程读。 pipe(fd[2]) fd[1]写,fd[0]读#include <unistd.h>#include <stdio.h>#include <string.h>#define MAXSIZE 100int main() { int fd[2],pid,line; char message[100]; if (pipe(f原创 2016-05-12 14:20:33 · 339 阅读 · 0 评论 -
IO多路复用之select poll epoll
基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取,它就通知该进程。IO多路复用适用如下场合: (1)当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使用I/O复用。 (2)当一个客户同时处理多个套接口时,而这种情况是可能的,但很少出现。 (3)如果一个TCP服务器既要处理监听套接口,又要处理已连接套接口,一般也要用到I/O复用。 (4)如果一个服务器原创 2015-09-23 20:03:05 · 538 阅读 · 0 评论