第十一章 网络编程

每个网络应用都是基于客户端-服务端模型的。根据这个模型,一个用用是由一个服务器和一个或多个客户端组成的。服务器管理资源,以某种方式操作资源,为客户端服务。例如,一个Web服务器管理着一组磁盘文件,它会代表客户端进行检索和执行。

客户端-服务端模型中的基本操作是事务。一个客户端-服务器事务由以下四步组成:

1、当一个客户端需要服务时,它向服务器发送一个请求,发起一个事务。

2、服务器收到请求后,解释它,并以适当的方式操作它的资源

3、服务器给客户端发送一个响应,并等待下一个请求

4、客户端收到响应并处理它

客户端和服务器通过因特网这个全球网络来通信。从程序员的观点来看,我们可以把因特网看成是一个全球范围的主机集合,具有以下几个属性:

1、每个因特网主机都有一个唯一的32位名字,称为它的IP地址。IP地址通常是以一种成为点分十进制表示法来表示,其中每个字节由它的十进制表示,并用句点和其他字节分开。

2、IP地址的集合被映射为一个因特网域名的集合。

3、不同因特网主机上的进程能够通过连接互相通信。

客户端和服务器通过使用套接字接口建立连接。一个套接字是连接的一个端点,每个套接字都有相应的套接字地址,是由一个因特网地址和一个16位的整数端口组成的,用“地址:端口”来表示。

一个连接是由它两端的套接字地址唯一确定的。

常见的几个函数作用:

socket函数:客户端和服务器使用socket函数类创建一个套接字描述符。

connect函数:客户端调用connect函数来建立和服务器的连接。

bind函数:告诉内核将addr中的服务器套接字地址和套接字描述符sockfd联系起来。

listen函数:将sockfd从一个主动套接字转换为一个监听套接字,该套接字可以接受来自客户端的连接请求。

accept函数:服务器通过调用accept函数来等待来自客户端的连接请求。

Web服务器使用HTTP协议和它们的客户端彼此通信。浏览器向服务器请求静态或动态的内容。对静态内容的请求时通过从服务器磁盘取得文件并把它返回给客户端来服务的。对动态内容的请求时通过在服务器上一个子进程的上下文中运行一个程序并将它的输出返回给客户端来服务的。

原文地址:https://www.cnblogs.com/sunnyDream/p/10326704.html

时间: 2024-10-14 02:21:05

第十一章 网络编程的相关文章

[CSAPP笔记][第十一章网络编程]

第十一章 网络编程 我们需要理解基本的客户端-服务端编程模型,以及如何编写使用因特网提供的服务的客户端-服务端程序. 最后,我们将把所有这些概念结合起来,开发一个小的但功能齐全的Web服务器,能够为真实的Web浏览器提供静态的和动态的文本和图形内容. 11.1 客户端 - 服务器编程模型 每个网络应用程序都是基于客户端 - 服务器模型的 采用这种模型,一个应用是由一个服务器进程 和一个或多个客户端进程组成. 服务器管理某种资源,并且通过操作这种资源为它的客户端提供某种服务. WEB服务器,代表客

深入理解计算机系统 第十一章 网络编程

每个网络应用都是基于客户端-服务器模型的.根据这个模型,一个应用是由一个服务器和一个或多个客户端组成的.服务器管理资源,以某种方式操作资源,为它的客户端提供服务.客户端-服务器模型中的基本操作是客户端-服务器事务,它是由客户端请求和跟随其后的服务器响应组成的. 客户端和服务器通过因特网这个全球网络来通信.从程序员的观点来看,我们可以把因特网看成是一个全球范围的主机集合,具有以下几个属性:(1)每个因特网主机都有一个唯一的 32 位名字,称为它的 IP 地址.(2)IP 地址的集合被映射为一个因特

第13章 网络编程

1 /***************** 2 ***第13章 网络编程 3 *******知识点: 4 **************1.基本概念 5 ******************1.1 网络OSI模型 6 ******************1.2 IP地址 7 ******************1.3 端口地址 8 ******************1.4 通讯协议 9 **************2.Java网络相关类 10 ******************2.1 URLDe

第三章 网络编程

终于学到网络编程了! 先上图和程序: 这是今天写的TCP的实现 服务器和客户端分别在两台电脑 这是服务器图: 这是服务器程序: 1 #-*- coding:utf-8 -*- 2 from socket import * #导入socket所有属性 3 from time import ctime #导入ctime() 4 5 6 host = '' #HOST 变量为空,表示bind()函数可以绑定在所有有效的地址上. 7 port = 21000 #设置端口 8 bufsize = 1024

Python基础教程(第十四章 网络编程)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5538341.html______ Created on Marlowes 本章将会给读者展示一些例子,这些例子会使用多种Python的方法编写一个将网络(比如因特网)作为重要组成部分的程序.Python是一个很强大的网络编程工具,这么说有很多原因,首先,Python内有很多针对常见网络协议的库,在库顶部可以获得抽象层,这样就可以

&lt;&lt;Python基础教程&gt;&gt;学习笔记 | 第14章 | 网络编程

Python是个很强大的网络编程工具,原因有二: 1. Python内有很多针对常见网络协议的库 2. Python在处理字节流方面的优势 本章主要内容: 探讨Python标准库中的一些网络模块,探讨SocketServer类,最后是Twisted框架. ------ 相关模块 Socket模块 基本组件,用于两个程序之间的信息通道.套接字包括两个: 服务器套接字和客户端套接字.创建一个服务器套接字后,让它等待连接,这样它就在某个网络地址处监听.客户端套接字负责:简单的连接,完成事务,断开连接.

第十七章.网络编程

Java的基本网络支持: 使用InetAddress: 1 import java.net.InetAddress; 2 3 public class InetAddressTest{ 4 public static void main(String[] args) throws Exception{ 5 //根据主机名来获取对应的InetAddress实例 6 InetAddress ip = InetAddress.getByName("www.lanshanxiao.cc");

Linux Linux程序练习十一(网络编程大文件发送UDP版)

//网络编程发送端--大文件传输(UDP) #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <errno.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <arp

第六章|网络编程-socket开发

1.计算机基础 作为应用开发程序员,我们开发的软件都是应用软件,而应用软件必须运行于操作系统之上,操作系统则运行于硬件之上,应用软件是无法直接操作硬件的,应用软件对硬件的操作必须调用操作系统的接口,由操作系统操控硬件. 比如客户端软件想要基于网络发送一条消息给服务端软件,流程是: 1.客户端软件产生数据,存放于客户端软件的内存中,然后调用接口将自己内存中的数据发送/拷贝给操作系统内存 2.客户端操作系统收到数据后,按照客户端软件指定的规则(即协议).调用网卡发送数据 3.网络传输数据 4.服务端