全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
python 网络编程网络编程 一 套接字套接字是为特定网络协议 例如 TCP IP ICMP IP UDP IP 等 套件对上的网 络应用程序提供者提供当前可移植标准的对象 它们允许程序接受并进行连接 如发 送和接受数据 为了建立通信通道 网络通信的 二 套接字 套接字是为特定网络协议 例如 TCP IP ICMP IP UDP IP 等 套件对上的网络应用 程序提供者提供当前可移植标准的对象 它们允许程序接受并进行连接 如发送和接 受数据 为了建立通信通道 网络通信的每个端点拥有一个套接字对象极为重要 套接字为 BSD UNIX 系统核心的一部分 而且他们也被许多其他类似 UNIX 的操作系 统包括 Linux 所采纳 许多非 BSD UNIX 系统 如 ms dos windows os 2 mac os 及大部分主机环境 都以库形式提供对套接字的支持 三种最流行的套接字类型是 stream datagram 和 raw stream 和 datagram 套接字可以直 接与 TCP 协议进行接口 而 raw 套接字则接口到 IP 协议 但套接字并不限于 TCP IP 二 套接字模块 套接字模块是一个非常简单的基于对象的接口 它提供对低层 BSD 套接字样式网络的 访问 使用该模块可以实现客户机和服务器套接字 要在 python 中建立具有 TCP 和 流套接字的简单服务器 需要使用 socket 模块 利用该模块包含的函数和类定义 可 生成通过网络通信的程序 一般来说 建立服务器连接需要六个步骤 第 1 步是创建 socket 对象 调用 socket 构造函数 socket socket socket familly type family 的值可以是 AF UNIX Unix 域 用于同一台机器上的进程间通讯 也可以是 AF INET 对于 IPV4 协议的 TCP 和 UDP 至于 type 参数 SOCK STREAM 流套 接字 或者 SOCK DGRAM 数据报文套接字 SOCK RAW raw 套接字 第 2 步则是将 socket 绑定 指派 到指定地址上 socket bind address address 必须是一个双元素元组 host port 主机名或者 ip 地址 端口号 如果端口号正 在被使用或者保留 或者主机名或 ip 地址错误 则引发 socke error 异常 第 3 步 绑定后 必须准备好套接字 以便接受连接请求 socket listen backlog backlog 指定了最多连接数 至少为 1 接到连接请求后 这些请求必须排队 如果队 列已满 则拒绝请求 第 4 步 服务器套接字通过 socket 的 accept 方法等待客户请求一个连接 connection address socket accept 调用 accept 方法时 socket 会进入 waiting 或阻塞 状态 客户请求连接时 方法建 立连接并返回服务器 accept 方法返回一个含有俩个元素的元组 形如 connection address 第一个元素 connection 是新的 socket 对象 服务器通过它与 客户通信 第二个元素 address 是客户的 internet 地址 第 5 步是处理阶段 服务器和客户通过 send 和 recv 方法通信 传输数据 服务器调 用 send 并采用字符串形式向客户发送信息 send 方法返回已发送的字符个数 服务 器使用 recv 方法从客户接受信息 调用 recv 时 必须指定一个整数来控制本次调用所 接受的最大数据量 recv 方法在接受数据时会进入 blocket 状态 最后返回一个字符串 用它来表示收到的数据 如果发送的量超过 recv 所允许 数据会被截断 多余的数据 将缓冲于接受端 以后调用 recv 时 多余的数据会从缓冲区删除 第 6 步 传输结束 服务器调用 socket 的 close 方法以关闭连接 建立一个简单客户连接则需要 4 个步骤 第 1 步 创建一个 socket 以连接服务器 socket socket socket family type 第 2 步 使用 socket 的 connect 方法连接服务器 socket connect host port 第 3 步 客户和服务器通过 send 和 recv 方法通信 第 4 步 结束后 客户通过调用 socket 的 close 方法来关闭连接 三 一个简单的服务器和客户端通信的例子 服务器 import socket s socket socket s bind xxx xxx xxx xxx xxxx ip 地址和端口号 s listen 5 cs address s accept print got connected from address cs send byebye ra cs recv 512 print ra cs close 客户端 import socket s socket socket s connect xxx xxx xxx xxx xxxx 与服务器程序 ip 地址和端口号相同 data s recv 512 s send hihi s close print the data received is data 运行 在本机测试 windows 环境下 可以将 ip 地址改为本机 ip 端口号在 1024 以上 windows 将 1024 以下的为保留 运行 CMD 进入命令行模式 先 python 服务器程序 后 python 客户端程序即可 或者启动服务器程序后 用 telnet ip 地址 端口号 也可以得到同样结果 让 server 持续接受连接 server py import socket s socket socket s bind 192 168 43 137 2000 s listen 5 while 1 cs address s accept print got connected from address cs send hello I am server welcome ra cs recv 512 print ra cs close 测试两个一个程序中两个 socket 并存是否可行 client py import socket s socket socket s connect 192 168 43 137 2000 data s recv 512 print the data received is n data s send hihi I am client sock2 socket socket sock2
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年绍兴市上虞中医医院医护人员招聘笔试备考试题及答案详解
- 2026年漯河市中医院医护人员招聘考试备考试题及答案详解
- 2026年湖北省肿瘤医院医护人员招聘笔试备考试题及答案详解
- 2026年南阳市张仲景医院医护人员招聘笔试参考题库及答案详解
- 2026年宁夏医科大学总医院医护人员招聘笔试备考题库及答案详解
- 2026年天津市长征医院医护人员招聘笔试备考试题及答案详解
- 2026年柳州市中医医院医护人员招聘笔试备考题库及答案详解
- 2026年河北省职工医学院附属医院医护人员招聘考试备考题库及答案详解
- 2026年国家开发银行(四川省分行)人员招聘笔试参考试题及答案详解
- 2026年黑龙江省医院道外分院医护人员招聘笔试参考试题及答案详解
- 2025年湖南省事业单位第一次公开招聘工作人员笔试历年典型考题及考点剖析附带答案详解
- 2026广西能汇投资集团有限公司校园招聘笔试参考题库及答案解析
- 2026年沪教版(五四学制)(新教材)初中生物八年级下册(全册)教案附目录p121新版
- 监理实施细则交底书
- 2026江苏南京六合经济开发区所属国有企业招聘17人笔试历年常考点试题专练附带答案详解
- 2026年4月自考00043经济法概论(财经类)试题及答案含评分参考
- 2026年二级造价工程师《建设工程造价管理基础知识》考试真题(答案和解析附后)
- 2026年高考(河南卷)语文试题及答案
- 初中语文九年级上册 文言文27篇 备考知识清单
- 2025-2026学年人教版七年级生物下册核心知识点总结归纳
- 国开2026年《新媒体伦理与法规》形成性考核1-5答案
评论
0/150
提交评论