网络编程/web编程/套接字

概念: 服务器是一个软件或硬件,用于提供客户需要的“服务”。服务器存在的唯一目的就是等待客户的请求,给这些客户服务,然后再等待其它的请求。

分类:

硬件客户/服务器架构:打印机、文件服务器;

软件客户/服务器架构:Web 服务器 、数据库服务器、窗口服务器 (x服务器)等。

套接字:通讯端点

套接字地址:主机与端口,合法的端口号范围为 0 到 65535。其中,小于 1024 的端口号为系统保留端口。

一开始,套接字被设计用在同一台主机上多个应用程序之间的通讯。这也被称进程间通信IPC(Inter Process Communication

套接字有两种:基于文件型,其“家族名”为 AF_UNIX,表示“地址家族:UNIX”;

和基于网络型,它有自己的家族名字:AF_INET,或叫“地址家族:Internet”。

  Python 只支持 AF_UNIX,AF_NETLINK,和 AF_INET 家族。网络编程只用 AF_INET。

   无论哪一种地址家族,套接字的类型只有两种:面向连接的套接字, 无连接套接字

面向连接的套接字,即在通讯之前一定要建立一条连接,这种通讯方式也被称为“虚电路”或“流套接字”。面向连接的通讯方式提供了顺序的,可靠的,不会重复的数据传输,而且也不会被加上数据边界。实现这种连接的主要协议就是传输控制协议(即 TCP) 。

无连接套接字,无需建立连接就可以进行通讯,实现这种连接的主要协议就是用户数据报协议(即 UDP)。


 套接字对象的常用函数
 函数                      描述
服务器端套接字函数
s.bind()           绑定地址(主机,端口号对)到套接字
s.listen()        开始 TCP 监听
s.accept()        被动接受 TCP 客户的连接, (阻塞式)等待连接的到来
客户端套接字函数
s.connect()       主动初始化 TCP 服务器连接
s.connect_ex()    connect()函数的扩展版本,出错时返回出错码,而不是抛异常
公共用途的套接字函数
s.recv()          接收 TCP 数据
s.send()         发送 TCP 数据
s.sendall()      完整发送 TCP 数据
s.recvfrom()    接收 UDP 数据
s.sendto()       发送 UDP 数据
s.getpeername() 连接到当前套接字的远端的地址
s.getsockname() 当前套接字的地址
s.getsockopt() 返回指定套接字的参数
s.setsockopt() 设置指定套接字的参数
s.close()       关闭套接字

  可以这样区分“因特网编程”和“Web 编程” ,后者仅包括针对 Web 的应用程序开发,也就是说Web 客户端和服务器是本章的焦点。

  高级 Web 客户端的一个例子就是网络爬虫(aka 蜘蛛和机器人)。这些程序可以基于不同目的在因特网上探索和下载页面

URL 格式: prot_sch://net_loc/path;params?query#frag

URL 部件      描述
prot_sch    网络协议或者下载规划
net_loc     服务器位置(或许也有用户信息)
path        斜杠( / )限定文件或者 CGI 应用程序的路径。
Params      可选参数
query       连接符( & )连接键值对

frag        拆分文档中的特殊锚

 如今的 Web 服务器典型的部件有 Aphache,Java(Tomcat),PHP 和各种 Perl 模块,Python 模块和集成的数据库部件(MySQL 或者 PostgreSQL),以及 SSL/security。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值