我们常说的计算机网络通信,值得是两台,或者多台计算机间,进行数据传输。

从计算机网络发展至今,人们使用了很多协议,但是最常用的还是tcp/ip协议,实际上这是一组协议。

当然使用python做网络编程的时候,我们通常都会在tcp/ip协议上面编程。也就是我们不需要关心,tcp/ip层真正传输层协议

【1】 socket

通常我们可以这么理解socket -->用来标识远程主机上面的某一个进程。

当我们的客户端请求,发送到服务器的网口上面去之后,操作系统让哪个进程去处理它呢?

socket解决的就是这个问题。

就相当于,我们去大厦里面找一个公司一样,通常都会有xx大厦几楼几零几。

socket在服务器角度来看,其实就是一个文件(unix/linux),准确的说,是一个文件描述符(一般指的就是文件,或者类似文件的实体)

对socket的操作,其实跟对文件的操作是极其相似的比如recv()和read()

# -*- coding: utf-8 -*
__author__ = 'Administrator'
import socket
def handle_request(client):
buf = client.recv(1024)
client.send("HTTP/1.1 200 OK\r\n\r\n")
client.send("Hello, World") def main():
'''
问题:如果想在小吃街开一家包子铺,总共需要几步
''' # 【1】 取得经营许可证--->创建socket对象吧
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
#【2】找一家铺子开张-->监听socket
sock.bind(('localhost',8080))
sock.listen(5) #【3】开张
while True:
#【4】等客上门啊
connetction,address = sock.accept()
#connetction,address 分别是客户端对象和客户端地址44
handle_request(connetction)
connetction.close() if __name__ == '__main__':
main()

  【2】socket 的建立

import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect(("www.baidu.com",80))

 我们可以看看这三行代码,最简单的socket的客户端代码

#1 在python中我们想创建socket的时候 可以直接导入socket模块 通过实例化来获得socket对象

#2 我们首先实例化了socket.socket,并且实例化过程中传递了两个参数 这里的AF_INET 值得是通信类型 这里指的是ipv4 而SOCK_STERAM 值得是协议 这里指的是TCP协议

import socket
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
port = socket.getservbyname('http','tcp')
print port
s.connect(("www.baidu.com" ,port))

#getservbyname 这个函数 默认维持一个庫,可以获取某个协议监听的tcp端口号 当然这个协议监听的端口号 是标准的 我们这里获取的http 当然你也可以换成udp

【2】socket 的异常

python 的socket 的模块定义了四种错误

1> 与一般I/O的通信问题有关的 socket.error

2>与查询地址有关的socket.herror

3>与其他地址错误有关的socket.herror(和c语言中的h_errno相关

4>与在一个socket上调用的settimeout()后处理超时有关的sock.timeout(需要2.3或者更高版本)

当然我们能这些都是我们在大部分情况下能预见的错误

但是在网络编程中,有的时候通信出现问题,却没有产生异常,因为对方没有传回错误

python-网络编程-01的更多相关文章

  1. python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术

    python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...

  2. python网络编程-01

    python网络编程 1.socket模块介绍 ①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”. ②套接字包括两个部分:服务器套接字.客户机套接字 ③ ...

  3. python网络编程01

    1.什么是C/S架构? 客户端/服务器架构.实现服务端软件与客户端软件基于网络的通信. 2.互联网协议是什么?分别介绍五层协议中每一层的功能? 互联网协议是指用于互联网通信的规范.分为:osi七层.t ...

  4. Python 网络编程(二)

    Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...

  5. Python 网络编程(一)

    Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  6. Python学习(22)python网络编程

    Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...

  7. Day07 - Python 网络编程 Socket

    1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...

  8. 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档

    Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...

  9. Python网络编程基础pdf

    Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...

  10. python 网络编程(Socket)

    # from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...

随机推荐

  1. Redis数据库2

    一.存储list 1.概述     list类型是按照插入顺序排序的字符串链表,可以在头部(left)和尾部(right)添加新的元素,如果不存在,则自动创建;如果list中所有元素被移除,则list ...

  2. ORA-02273: this unique/primary key is referenced by some foreign keys

    关于ORA-02273错误,以前还真没有仔细留意过.昨天遇到了这个问题,遂顺便总结一番,以后遇到这类问题就可以直接用下面方案解决.如下所示,我们首先准备一下测试环境. CREATE TABLE TES ...

  3. 将服务器上的文件通过HttpWebRequest下载到本地

    外网地址需要先映射. string path=""; path=@"http://222.92.71.116/P2Foundation/Images/logo.gif&q ...

  4. Java 变量及基本数据类型

    1.Java变量 1.1 变量的概念 内存中开辟的一块存储空间,用于存放运算过程中需要用到的数据: 该区域有自己的名称(变量名)和类型(数据类型): 该区域的数据可以在同一类型范围内不断变化: 1) ...

  5. python基础教程总结15——6 CGI远程编辑

    功能: 将文档作为普通网页显示: 在web表单的文本域内显示文档: 保存表单中的文本: 使用密码保护文档: 容易拓展,支持处理多余一个文档的情况 1.CGI CGI(Comment Gateway I ...

  6. HTML5<section>元素

    HTML5<section>元素用来定义页面文档中的逻辑区域或内容的整合(section,区域),比如章节.页眉.页脚或文档中的其他部分. 根据W3C HTML5文档中:section里面 ...

  7. 01_8_session

    01_8_session 1. session总结 1.1服务器的一块内存(存key-value) 1.2和客户端窗口对应(子窗口)(独一无二) 1.3客户端和服务器有对应的SessionID 1.4 ...

  8. d3.js--03(增删改查)

    选择元素 d3.select():是选择所有指定元素的第一个 d3.selectAll():是选择指定元素的全部 插入元素 append():在选择集末尾插入元素 insert():在选择集前面插入元 ...

  9. 【wqs二分 决策单调性】HHHOJ#261. Brew

    第一道决策单调性…… 题目描述 HHHOJ#261. Brew 题目分析 挺好的……模板题? 寄存了先. #include<bits/stdc++.h> typedef long long ...

  10. k8s基于canel的网络策略

    Kubernetes能够把集群中不同Node节点上的Pod连接起来,并且默认情况下,每个Pod之间是可以相互访问的.但在某些场景中,不同的Pod不应该互通,这个时候就需要进行访问控制.亲测:在kube ...