松狮

如果你想拥有你从未有过的东西, 那么你必须去做你从未做过的事情!

UNIX网络编程——进程间通信

进程间通信,Interprocess Communication,IPC 1、管道和FIFO (1)管道的根本局限在于没有名字,从而只能由有亲缘关系的进程使用。FIFO也叫有名管道,解决了这个限制。管道和FIFO都是使用read和write函数来访问的。 (2)创建管道:int  pipe (i...

2016-07-27 19:53:29

阅读数:449

评论数:0

《C陷阱与缺陷》笔记

这本书不是批判,而是指出易犯错误,防止编程中的陷阱和障碍。 1、易犯错误类型归纳: (1)词法分析;(2)语法细节问题;(3)语义细节;(4)库函数的误用;(5)预处理器;(6)可移植性;(7)预防性程序设计; 2、运算符优先级: (1)任何一个逻辑运算符的优先级低于任何一个关系运算符; ...

2016-07-13 16:59:04

阅读数:287

评论数:0

UNIX网络编程——并发服务器(多线程)

并发服务器:       (1)多进程并发服务器:http://blog.csdn.net/songshimvp1/article/details/51819765                              示例:http://blog.csdn.net/songshimvp1/a...

2016-07-13 11:10:23

阅读数:608

评论数:0

UDP,TCP,SCTP使用场合

1、何时使用UDP代替TCP? (1)UDP的优势:          A. UDP支持广播和多播。如果应用程序使用广播或者多播,那就必须使用UDP。          B. UDP没有连接的建立与拆除。UDP只需要两个分组就能交换一个请求和一个应答。 (2)UDP无法...

2016-07-13 00:09:52

阅读数:1118

评论数:0

基本排序算法(2)

1、堆排序: 转(http://www.cnblogs.com/dolphin0520/archive/2011/10/06/2199741.html) 举例说明:      给定一个整形数组a[]={16,7,3,20,17,8},对其进行堆排序。     首先根据该数组元素构建一个完全二叉树,...

2016-07-11 13:19:59

阅读数:443

评论数:0

基本排序算法(1)

1、冒泡排序: 冒泡排序的 基本思想是:两两比较相邻的数据,如果反序,则交换;知道没有反序位置。每一趟都会把一个数字放到最终的位置上!时间复杂度O(N^2)。 void bubbleSort2(int *data,int length) { bool swapFlag = true; //冒...

2016-07-11 12:59:52

阅读数:853

评论数:0

UNIX网络编程——套接字I/O操作上的超时设置

1、调用alarm(SIGALRM信号处理) 调用alarm,它在指定超时期满时产生SIGALRM信号。 (1)使用SIGALRM为connect设置超时:因为在多线程程序中处理信号非常困难,因此建议只是在未线程化程序 或 单线程化程序中使用该技术。 /* include connect_time...

2016-07-08 14:13:20

阅读数:387

评论数:0

UNIX网络编程——守护进程和inted超级服务器

1、守护进程       守护进程是在后台运行,且不和任何控制终端交互关联的进程。 2、syslogd守护进程——系统日志消息守护进程 (1)syslogd函数:调用该函数从守护进程中登记消息。          void syslog(int priority, const ch...

2016-07-08 13:21:08

阅读数:704

评论数:0

UNIX网络编程——基本SCTP套接字编程

1、一到一形式:(与TCP的典型用法几乎一样)        一到一形式套接字是一个类型为SOCK_STREAM,协议为IPPROTO_SCTP的网际套接字。 2、一到多形式:        服务器程序无需管理大量的套接字描述符,单个套接字描述符将代表多个关联。在一到多形式的套接字上,用“...

2016-07-07 20:36:59

阅读数:1156

评论数:0

UNIX网络编程——基本UDP套接字编程

1、UDP客户/服务器套接字函数 UDP回射客户/服务器: 2、UDP服务器实现: #include "unp.h" void  dg_echo(int sockfd, SA *pcliaddr, socklen_t clilen) {     int      ...

2016-07-07 15:09:25

阅读数:304

评论数:0

UNIX网络编程——并发服务器(I/O复用)

I/O复用型并发服务器:I/O复用是用来解决。         在这篇文章http://blog.csdn.net/songshimvp1/article/details/51819765中,介绍了多进程并发服务器(为每一个客户fork一个子进程)。接下来我们介绍I/O复用型并发服务器(使用sel...

2016-07-07 10:24:32

阅读数:828

评论数:0

UNIX网络编程——shutdown函数(I/O复用并发服务器)

上述这篇文章http://blog.csdn.net/songshimvp1/article/details/51838990中,第4点,以批量处理方式运行客户,仅仅使用select无法实现TCP的半关闭——给服务器发送一个FIN,告诉它我们完成了数据的发送,但是仍然保持套接字描述符打开以便读取。...

2016-07-06 22:00:56

阅读数:648

评论数:0

UNIX网络编程——I/O复用(select、poll)

1、五种I/O模型:      (1)阻塞式I/O;(2)非阻塞式I/O;(3)I/O复用(select、poll);(4)信号驱动式I/O(SIGIO);(5)异步I/O(aio_系列函数);       一个输入操作分为两个阶段:A. 等待数据准备好;B. 从内核向进程复制数据。       ...

2016-07-06 17:40:20

阅读数:596

评论数:0

UNIX网络编程——使用waitpid处理僵尸进程(TCP客户/服务器优化1)

1、僵尸进程 僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵死进程。  unix提供了一种机制可以保证只要父进程想知道子进程结束时的状态信息, 就可以得到...

2016-07-06 12:01:58

阅读数:546

评论数:0

UNIX网络编程——TCP客户/服务器(回射服务器)示例(多进程服务器)

TCP客户/服务器(回射服务器)完整简单示例。如果你想了解TCP客户/服务器,以及多进程并发服务器具体过程,可以看:http://blog.csdn.net/songshimvp1/article/details/51819820 和 http://blog.csdn.net/songshim...

2016-07-06 09:59:26

阅读数:605

评论数:0

UNIX网络编程——并发服务器(多进程)

1、TCP客户/服务器(回射服务器)完整简单示例:

2016-07-05 20:57:27

阅读数:624

评论数:0

UNIX网络编程——TCP的连接建立与终止、基本TCP客户/服务器套接字函数

写在前面,本来觉得关于TCP的建立与终止是一些纯理论的东西,看UNIX网络编程时大概看了一下,没想到后面所涉及到的编程都需要十分熟悉TCP的建立、连接、终止的过程细节,所以特地返回来总结一下。

2016-07-05 18:09:25

阅读数:598

评论数:0

孤儿进程与僵尸进程

1、前言   之前在看《unix环境高级编程》第八章进程时候,提到孤儿进程和僵尸进程,一直对这两个概念比较模糊。今天被人问到什么是孤儿进程和僵尸进程,会带来什么问题,怎么解决,我只停留在概念上面,没有深入,倍感惭愧。晚上回来google了一下,再次参考APUE,认真总结一下,加深理解。 2、基...

2016-07-04 15:41:59

阅读数:209

评论数:0

UNIX网络编程——概述

1、编写计算机网络通信程序,首先要确定这些程序相互通信所用的协议。在深入设计一个协议之前,应该从高层次决断由哪一个程序发起通信,以及在何时产生响应。 2、(1)客户与服务器使用TCP在同一个局域网 (2)客户与服务器在不同局域网(使用广域网连接) 3、OSI模型和网际协议族中的各层    ...

2016-07-03 13:51:51

阅读数:317

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭