UNIX网络编程
文章平均质量分 86
Dandelion_gong
这个作者很懒,什么都没留下…
展开
-
UNIX网络编程之管道与FIFO
管道是最初的Unix IPC形式,它们的最大局限是没有名字,所以,管道只能用于有亲缘关系的进程只见使用。之后,慢慢随着FIFO的加入,这点才有所改观。FIFO也成为又名管道。管道和FIFO的共同点就是它们都是通过read和write函数进行访问的。管道: 管道时有pipe函数创建,提供一个单路数据流。也就是说,所有的管道都是半双工。 管道创建方法: #include <unistd.h>原创 2016-05-16 18:05:11 · 3984 阅读 · 0 评论 -
UNIX网络编程:高性能网络服务
Linux的一个应用优势是可用于设计各种高性能网络服务程序,高性能得一个特点就是实现并发访问处理,及服务程序能够同时为多个在线用户提供服务,高性能服务程序得应用非常广泛,在当前流行得Web服务器,各种游戏服务器中都能看到它的身影,而多进程网络服务程序,多线程网络服务程序,以及线程池网络服务程序的实现会更加提高网络服务的性能。高性能网络服务程序简介 高性能网络服务程序在当前的LINUX环境下应用非常原创 2016-06-09 20:02:18 · 2240 阅读 · 2 评论 -
UNIX网络编程:消息队列
IPC中除了管道PIPE、FIFO、信号量和共享内存区意外,还有一个很重要的形式——消息队列。消息队列相比共享内存来说,它本身带有同步机制。 消息队列是将消息按队列的方式组织成的链表,每个消息都是其中的一个节点。 消息队列的运行方式与命名管道非常相似。欲与其他进程通信的进程只要将消息发送到消息队列中,目的进程就从消息队列中读取需要的消息。需要注意的是,消息队列的长度以及每个消息的大小都是有原创 2016-05-19 15:29:58 · 970 阅读 · 0 评论 -
TCP:三次握手与四次挥手
原博客地址:http://blog.csdn.net/l953972252/article/details/51605099TCP协议在运输层工作,当客户端想要连接服务器,TCP协议要求 客户端和服务器共需要3次数据传输,才能确保客户端和服务器已经连通,我们把这个过程称为——3次握手。为什么是3次握手呢?我先来举一个现实中的例子。我给你打电话时,当拨号过去时,相当于我发送了第一次握手,表示我想和你通转载 2016-06-07 20:14:58 · 605 阅读 · 0 评论 -
UNIX网络编程:socket套接字(TCP与UDP)
套接字简介:套接字是网络编程中的一种通信机制,是支持TCP/IP的网络通信的基本操作单元,可以看做是不同主机之间的进程进行双向通信的端点,简单的说就是通信的两方的一种约定,用套接字中的相关函数来完成通信过程。应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行,Linux所提供的原创 2016-06-07 18:46:38 · 6020 阅读 · 1 评论 -
进程—僵尸进程与孤儿进程
原博客地址:http://blog.csdn.net/l953972252/article/details/51399576在探讨这个问题之前,我们先来弄清什么是进程。 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。在早期面向进程设计的计算机结构中,进程是程序的基本执行实体;在当代面向线程设计的计算机结构中,进程是线转载 2016-06-01 20:44:41 · 2632 阅读 · 0 评论 -
UNIX网络编程:读写锁
之前我们整理了互斥锁与条件变量问题它保证了共享资源的安全,但在多线程中我们也会经常对共享数据进行读、写操作。也就是说对某些资源的访问会 存在两种可能的情况,一种是访问必须是排查性的,就是独占的意思,这称作写操作;另一种情况就是访问方式可以是共享的,就是说可以有多个线程同时去访问某个资源,这种就称作读操作。这个问题模型是从对文件的读写操作中引申出来的。读写锁比起mutex具有更高的适用性,具有更高的并原创 2016-06-01 17:13:09 · 2776 阅读 · 0 评论 -
UNIX网络编程:互斥锁和条件变量
在网络编程中,一般都是多线程的编程,这就出现了一个问题:数据的同步与共享。而互斥锁和条件变量就是为了允许在线程或进程间共享数据、同步的两种最基本的组成部分。它们总能够用来同步一个进程中的多个线程。 再进入互斥锁和条件变量之前,我们先对多线程的一些相关函数进行简单介绍:多线程简单介绍和相关函数: 通常,一个进程中包括多个线程,每个线程都是CPU进行调度的基本单位,多线程可以说是在共享内存空间中并发原创 2016-05-31 16:30:57 · 3027 阅读 · 0 评论 -
UNIX网络编程:共享内存区
IPC形式除了管道、FIFO、信号量以外,还有共享内存区和消息队列。这里主要堆共享内存进行介绍。 共享内存区是可用IPC形式中最快的。一旦这样的内存区映射到共享它的进程地址空间,这些进程间数据的传递就不再涉及内核。共享内存与其他进程通信方式相比较,不需要复制数据,直接读写内存,是一种效率非常高的进程通信方案。但它本身不提供同步访问机制,需要我们自己控制。在LINUX中,只要把共享内存段连接原创 2016-05-17 17:32:01 · 3273 阅读 · 0 评论 -
UNIX网络编程:信号量semphore
信号量是一种用于提供不同进程间或一个给定进程的不同线程件同步手段的原语.信号量是一个特殊的整数值,主要用来控制多个进程对临界资源的互斥访问,进程根据信号量来判断是否有 访问的资源。 信号量是一个计数器,可用于同步多进程对共享数据对象得访问,为了获得共享资源,进程需要执行以下操作: 1、测试控制该资源的信号量 2、若此信号量的值为正,则进程可以使用该资源,进程将信号原创 2016-05-16 22:03:14 · 7182 阅读 · 0 评论 -
UNIX网络编程:I/O复用技术(select、poll、epoll)
Unix下可用的I/O模型一共有五种:阻塞I/O 、非阻塞I/O 、I/O复用 、信号驱动I/O 、异步I/O。此处我们主要介绍第三种I/O符复用。 I/O复用的功能:如果一个或多个I/O条件满足(输入已准备好读,或者描述字可以承接更多输出)时,我们就被通知到。这就是有select、poll、epoll实现。I/O复用应用场合: 1、当客户处理多个描述字时(一般是交互式输入和网络套接口),必须使原创 2016-06-16 23:26:49 · 2544 阅读 · 0 评论