龙潭书斋 -- 389




只有一个进程的服务器是最简单的实现,被称为“迭代服务器”,但是一般的我们并不希望整个服务器被单个用户长期占用,而是希望同时服务多个用户,因此就需要并发服务器UNIX中编写并发服务器程序最简单的方法就是fork一个子进程来服务每个客户下面提供了并发服务器程序的框架:pid_t pid; int listenfd, connfd; listenfd = socket ( ... ); bind (listenfd, ... ); listen (listenfd, LISTENQ); for ( ; ; ) { connfd = accept (listenfd, ... ); if ( (pid = fork()) == 0 ) { close (listenfd); doit (connfd); close (connfd); exit (0); } close (connfd); } 当一个连接建立时,accept 返回,服务器接着调用 fork(关于 fork 函数的使用可以参看:创建子进程 -- fork、vfork,fork 与竞争条件和exec 函数 -- execl、execv、execle、execve、execlp、execvp),然后由子进程服务
#读书笔记    #技术帖    #tcp    #socket   

200x200


〇、基本的TCP客户/服务器程序的套接字函数 一、socketsocket 函数用来指定期望的通信协议类型int socket (int family, int type, int

#读书笔记    #技术帖    #linux    #unix   

200x200


〇、概述本章节主要介绍在套接字编程中常常需要使用的几个函数,关于TCP套接字编程中连接的建立和终止等需要用到的函数,可以参见:TCP连接的建立和终止和基本TCP套接字函数 一、字节排序函数对

#读书笔记    #技术帖    #c++    #cpp   
输入与输出Python 使用 print 语句进行输出,使用 raw_print()函数进行输入>>> num = raw_input('Now enter a number: ') Now enter a number: 123 >>> print '%s your input : %d' % ('doubling', int(num)*2) doubling your input : 246 可以看到,raw_input() 函数首先会将参数打印出来,并等待用户输入print 语句的用法和 C 语言中 printf() 函数的用法类似,也拥有 %d、%s、%f 等字符串格式操作符print 会在每行结尾自动添加换行符,如果不需要添加,则在最后写逗号 , 即可str = 'hello world' print str print str, print str 输出:hello world hello world hello world  python3.0 以后的变化需要注意的是,python3.0版本后对于上面的例子有以下两个修改:raw_in
#读书笔记    #技术帖    #龙潭书斋    #python   

200x200


〇、简介与斐波那契堆一样,是一种被称为可合并堆的数据结构如我们之前了解的,二叉堆在堆排序中的性能就很好:堆排序 但是,我们有的时候需要将两个二叉堆进行合并,这时的性能就不能让人满意了 一、二

#读书笔记    #技术帖    #算法    #算法导论   

200x200


插入排序是最简单排序算法之一,其过程非常类似于玩扑克牌时排列扑克牌的过程  /* * file: main.c * author: 龙泉居士 * date: 2012-12-22

#读书笔记    #技术帖    #算法    #算法导论   

200x200


〇、概述IPv4 套接字地址结构通常也称为“网际套接字地址结构”,以 sockaddr_in 命名,定义在 <netinet/in.h> 

#技术帖    #linux    #unix    #ip   

200x200


TCP 输出下图展示了某个应用进程写数据到一个 TCP 套接字中时发生的步骤 每一个 TCP 套接字都有一个发送缓冲区,我们可以使用&nbs

#读书笔记    #linux    #unix    #计算机网络   

200x200


一、三路握手建立一个TCP连接的过程如下: 服务器必须准备好接收外来的连接,这通常通过调用 socket、bind 和 listen 三个函数完成,我们称之为“

#读书笔记    #技术帖    #linux    #unix   
用户数据报协议 -- UDP协议UDP是一个简单的传输层协议,应用进程往一个UDP套接字写入一个消息,该消息随后被封装到一个UDP数据报,该UDP数据报进而又被封装到一个IP数据报,然后发送到目的地 UDP不保证UDP数据报会到达最终的目的地,不保证各个数据报的先后顺序跨网络后保持不变,也不保证每个数据报只到达一次我们使用UDP进行网络编程所遇到的问题是他缺乏可靠性,如果一个数据报到达了最终的目的地,但是校验和检测发现有错误,或者该数据报在网络传输途中丢失了,他就无法被投递给UDP套接字,也不会被源端自动重传,如果想要确保一个数据报到达目的地,可以忘应用程序中添加一大堆的特性:来自对方的确认、发送超时、重传等 每个UDP数据报都有一个长度,如果一个数据报正确地到达了目的地,那么该数据报的长度将随着数据一起传递给接收端的应用程序,而TCP协议则没有任何记录边界,这就是数据报协议与流协议的区别 UDP提供无连接的服务,因为UDP客户与服务器之间不必存在任何长期关系,比如用户可以创建一个UDP套接字并且发送一个数据报给一个特定的服务器,然后立即使用同一个套接字发送另一个数据报给另一个服务器,同样,一个UDP服务器可以用同一个可以用同一个UDP套接字从若干个不同的客户接收数据报 传输控制协议 -- TCP协议1
#读书笔记    #技术帖    #linux    #unix   



京ICP备15018585号