网络编程和进程通信
文章平均质量分 84
IT呵呵哒
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
基于线程的回射服务器
客户端:#include <unistd.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include <string.h>#include <stdlib.h>原创 2018-04-30 15:17:58 · 279 阅读 · 0 评论 -
共享内存之System V共享内存区(笔记)
概述: System V共享区在概念上类似于POSIX共享内存区。代之以调用shm_open后调用mmap的是,先调用shmget,再调用shmat。相关函数: shmdt函数: int shmget(key_t key, size_t size, int shmflg); 返回:若成功返回为共享内存区对象,若出错返回-1。 key既可以是ftok的返回值,也可以是IPC_PR...原创 2018-04-23 11:43:40 · 271 阅读 · 0 评论 -
共享内存之 POSIX共享内存区(笔记)
概述: 共享内存是可用IPC形式中最快的。一旦这样的内存区映射到共享它的进程的地址空间,这些进程间数据传递就不在涉及内核。然而往该共享内存区存放信息或从中取走信息的进程间需要某种形式的同步。相关函数: void *mmap(void *addr, size_t length, int prot, int flags, int fd, off_t offs...原创 2018-04-22 16:47:51 · 590 阅读 · 0 评论 -
用消息队列实现回射客户/服务器
服务器端:#include <unistd.h>#include <sys/types.h>#include <sys/ipc.h>#include <sys/msg.h>#include <stdlib.h>#include <stdio.h>#include <errno.h>#include原创 2018-04-21 14:48:58 · 282 阅读 · 0 评论 -
进程通信——消息队列(笔记)
消息队列: 消息队列提供了一个从一个进程向另外一个进程发送一块数据的方法。 每个数据块都被认为是有一个类型,接收者进程接收的数据数据块可以有不同的类型值。 消息队列也有管道一样的不足,就是每个消息的最大长度是有上限的(MSGMAX),每个消息队列的总的字节数是有上限的(MSGMAX),系统上的消息队列的总数也有一个上限(MSGMNI)。相关函数:1、msgget函数:该函...原创 2018-04-21 14:38:43 · 213 阅读 · 0 评论 -
进程学习之基本概念(笔记)
顺序程序和并发程序特征: 顺序程序特征: 1.顺序性 2.封闭性(运行环境封闭性) 3.确定性 4.可再现性 并发程序特征: 1.共享性 2.并发性 3.随机性进程互斥: 由于进程要求共享资源,而且有些资源需要互斥使用,因此各进程间竞争使用这些资源,进程这种关系为进程的互斥。 ...原创 2018-04-17 13:51:36 · 283 阅读 · 0 评论 -
epoll与select、poll区别(笔记)
select限制: 用select实现的并发服务器,能达到的并发数,受两方面的限制: 1.一个进程能打开的最大文件描述符限制。这可以通过调整内核参数。 2.select中的fd_set集合容量的限制(FD_SETSIZE),这需要重新编译内核。poll的限制: 一个进程能打开的文件描述符个数是有限的。两者共同点: 内核要遍历所有文件描述符,直到找到发生事件的文...原创 2018-04-08 18:12:52 · 259 阅读 · 0 评论 -
Select管理IO(笔记)
用select来管理多个IO。一旦其中的一个IO或者多个IO检测到我们所感兴趣的事件,select函数返回,返回值为检测到的事件个数,并且返回那些IO发生了事件。int select(int nfds, fd_set *readfds, fd_set *writefds,fd_set *exceptfds, struct timeval *timeout);参数说明: 1、读、写、异...原创 2018-04-03 11:09:01 · 522 阅读 · 0 评论 -
TCP如何保证可靠性(笔记)
应用数据被分割成TCP认为最合适发送的数据块,称为段传递给IP层。 当TCP发送一个段后,它启动一个启动器,等待目的端确认收到这个报文段。如何不能及时收到一个确认,将重新发送这个报文段。 当TCP收到发自TCP连接另一端的数据,它将发送一个确认。这个确认不是立即发送,通常将推迟几分之一秒。 TCP将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输过程...原创 2018-04-03 10:31:45 · 247 阅读 · 0 评论 -
Posix 消息队列(笔记)
概述: 消息队列可认为是一个消息链表。有足够写权限的线程可往队列中放置消息,有足够读取权限的线程在队列中取走消息。每个消息都是一个记录,它由发送者赋予一个优先级。在某个进程往一个队列写入消息之前,并不需要另外某个进程在该队列上等待消息的到达。这跟管道和FIFO是相反的,对后者来说,除非读出者已存在,否则先有写入者是没有意义的。 一个进程可以往队列写入一些消息,然后终止,再让另外一个进程...原创 2018-04-28 20:43:09 · 316 阅读 · 0 评论 -
线程之基本概念(笔记)
什么是线程: 在一个程序里的一个执行路线就叫做线程。更准确的定义是:线程是“一个进程内部的控制序列”。 一切进程至少都有一个执行线程。程序: 完成特定功能的一系列有序指令的集合。 可执行文件 代码段+数据段进程: 程序的一次执行过程。 代码段+数据段+堆栈段+PCB进程与线程: 进程是资源竞争的基本...原创 2018-04-30 12:15:08 · 162 阅读 · 0 评论 -
线程编程(笔记)
相关函数:pthread_create函数: int pthread_create(pthread_t *tid, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg);返回:若成功返回0,若出错返回正的Exxx值。 thread:一个进程内的各个线...原创 2018-04-30 15:12:14 · 130 阅读 · 0 评论 -
生产者消费者问题(共享内存实现)
问题描述: 生产者-消费者问题,也称作有界缓冲区问题,两个进程共享一个公共的固定大小的缓冲区。其中一个是生产者,用于将消息放入缓冲区;另外一个是消费者,用于从缓冲区中取出消息。问题出现在当缓冲区已经满了,而此时生产者还想向其中放入一个新的数据项的情形,其解决方法是让生产者此时进行阻塞,等待消费者从缓冲区中取走了一个或者多个数据后再去唤醒它。同样地,当缓冲区已经空了,而消费者还想去取消息,此时...原创 2018-04-30 10:58:18 · 5181 阅读 · 1 评论 -
哲学家就餐
“哲学家进餐”问题有五个哲学家,他们的生活方式是交替地进行思考和进餐。他们共用一张圆桌,分别坐在五张椅子上。在圆桌上有五个碗和五个刀叉,平时一个哲学家进行思考,饥饿时便试图取用其左、右最靠近他的刀叉,只有在他拿到两支刀叉时才能进餐。进餐完毕,放下刀叉又继续思考。解决方法: 只有哲学家要么不拿,要么左右手均拿起刀叉。思路: 创建一个信号量为5的信号集,并将其全部初始化为1。定义两个刀叉变...原创 2018-04-30 08:42:49 · 321 阅读 · 0 评论 -
基于UDP的简单聊天室
聊天室功能: 1.其他用户上线通知。 2.其他用户下线通知。 3.获取在线列表。 4.用户之间点对点聊天。实现思想: 1.服务器端主要是解析客户端发送过来的各种指令,并作出相应的处理和回应。 2.客户端采用select管理套接口IO和标准输入IO,当有事件发生,做出相应的处理。 3.采用链表存储每个客...原创 2018-04-15 09:51:04 · 5108 阅读 · 11 评论 -
基于UDP协议的简单回射服务器的实现
UDP客户/服务基本模型UDP特点: 1.无连接 2.基于消息的数据传输服务 3.不可靠 4.一般情况下UDP更加高效相关函数: ssize_t recvfrom(int sockfd,void *buff,size_t nbytes,int flags, struct sockad...原创 2018-04-08 19:03:44 · 478 阅读 · 0 评论 -
Socket编程--简单回射服务器的实现
TCP三次握手回射客户/服务器Socket函数1.包含头文件<sys/socket.h>2.功能:创建一个套接字用于通信3.原型 int socket(int domain,int type,int protocol);4.参数 domain:指定通信协议族 type:指定socket类型,流式套接字SOCK_STREAM(TCP),数据报套接字SOCK_DGR...原创 2018-03-19 15:51:35 · 1304 阅读 · 1 评论 -
生产者消费者问题之互斥量和信号量实现
互斥量: 可以使用Pthread的互斥接口来保护数据,确保同一时间只有一个线程访问数据。互斥量从本质上说是一把锁,在访问共享资源前对互斥量进行设置(加锁),在访问完成后释放(解锁)互斥量。对互斥量进行加锁以后,任何其他试图再次对互斥量进行加锁的线程都会被阻塞直到当前线程释放该互斥锁。如果释放一个互斥量时有一个以上的线程阻塞,那么所有该锁上的阻塞线程都被变成可运行状态,第一个变为运行的线程就可...原创 2018-05-08 12:01:01 · 2924 阅读 · 0 评论 -
线程特定数据(笔记)
概述: 线程特定数据,也称为线程私有数据,是存储和查询某个特定数据相关数据的一种机制。 在单线程程序中,我们经常要用到“全局变量”以实现多个函数间共享数据。 在多线程环境下,由于数据空间是共享的,因此全局变量也为所有所有线程所共有。 但有时应用程序设计中有必要提供线程私有的全局变量,仅在某个线程中有效,但却可以跨多个函数访问。 POSIX线程库通过维护一定的数据结构来...原创 2018-05-05 19:51:11 · 449 阅读 · 0 评论 -
线程属性相关函数的使用(笔记)
#include <unistd.h>#include <sys/types.h>#include <pthread.h>#include <stdlib.h>#include <stdio.h>#include <errno.h>#include <string.h>#define ERR_EX原创 2018-05-05 14:27:56 · 150 阅读 · 0 评论
分享