书:深入理解计算机系统(P614) 之 网络编程:简单echo客户端和服务端的实现

本文介绍了基于《深入理解计算机系统》的网络编程实验,包括Unix和Windows下的echo服务器和客户端实现,重点探讨了线程池在并发编程中的应用,强调了预线程化并发服务器的概念,即通过线程池技术提高服务器稳定性。
摘要由CSDN通过智能技术生成

Section I Problem Specification

实验要求:

本次实验是实现一个简单的C/S模型,是基于客户端和服务端的网络编程。服务端的程序启动后,会在在某端口监听来自客户端的连接,连接后,客户端会发送一个条字段给服务端,服务端接到字段后打印出来,然后再把接收到的字段返还给客户端,算是完成了一次完整的通信。此外,服务器不只只能为一个客户端服务,也就是,有多少不同的客户端连接服务端,服务端都需要应答。这里涉及了服务端的并发编程,在这里我们使用多线程来满足要求:主线程监听连接,每当有一个来自客户端的连接到来时,主线程新开一个线程与客户端通信。

基础知识:

客户端-服务器的通信:

实际上两者之间是客户端的一个进程和服务器的一个进程在通信,并且都通过了各自固定的端口。
此外,通过这种方式,服务器可以给客户端提供服务,这是因为服务器拥有丰富的资源。
一次提供服务的过程称为:transaction
如下图所示:




I/O设备——网络:

如下图所示,网络只是一台主机的一个I/O设备而已,就像连接到I/O总线上的其他设备:键盘、显示器。只是一直数据的发送处或者接受处(serves as a source and sink
for data)。



数据的流动:

较小的局域网,如下图所示,是用连接主机的双绞线和集线器(hub )的玩意组成,并称之为:以太网段。

较大的局域网,如下图所示,是由网桥将不同的以太网段组成起来。网桥的更多解释请看书:616页



上两幅图我们经常简化如下图,代表一个局域网:



那么互联网需要我们利用路由器来连接,如下图所示:




现在看起来我们打通了所有的主机,利用集线器、网桥、路由器,但是这并不代表主机之间的数据就可以随意串流。为了数据的传达到该到的地方,而且能够完整的传达到。需要很多不同的协议,在本次通信中是使用了TCP协议,当然路由器之间也有更多的协议帮助我们传播数据,如下图所示,对于我们要传播的data,还需要很多一定的加工,符合协议要求才能传送到对的地方。




TCP/IP的数据传输:

每台主机都能利用TCP/IP协议传播数据,这里因为现代操作系统都支持这个协议,一幅图展现了硬件和软件的结合,来利用TCP/IP传输数据:

Section II Solution Method and Design

套接字接口:

不同的操作系统下,都提供
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值