文章目录

  • 客户端/服务器架构
    • 1、即C/S架构
    • 2、C/S架构与socket的关系
    • 3、两机交互的原理
  • Socket编程
    • 1、socket编程的概念
    • 2、socket的两种类型
    • 3、socket的运行流程
    • 4、socket = ip + port
    • 5、socket实现的交流

从本篇文章开始,就进入了Python与网络结合的相关内容了,也就是进入了服务端、客户端、线程等方面的编程。本篇主要介绍socket编程的基础、用socket实现简单的收发消息。

客户端/服务器架构

1、即C/S架构

客户端/服务器架构就是C/S架构,包括两种:
(1)硬件C/S架构(打印机)
(2)软件C/S架构(web服务)

2、C/S架构与socket的关系

学习socket就是为了完成C/S架构的开发

3、两机交互的原理

Socket编程

1、socket编程的概念

Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄。(其实就是两个程序通信用的。)

套接字是一种通信机制,凭借这种机制,客户/服务器系统的开发工作既可以在本地单机上进行,也可以跨网络进行,Linux所提供的功能(如打印服 务,ftp等)通常都是通过套接字来进行通信的,套接字的创建和使用与管道是有区别的,因为套接字明确地将客户和服务器区分出来,套接字可以实现将多个客 户连接到一个服务器。

socket在网络传输中的位置:

2、socket的两种类型

它们都遵循两种协议: tcp协议和udp协议

流式Socket(STREAM): 是一种面向连接的Socekt,针对面向连接的TCP服务应用,安全,但是效率低
数据报式Socket(DATAGAM): 是一种无连接的Socket,对应于无连接的UDP服务应用。不安全(易丢失,顺序混乱,在接受端要分析重排及要求重发),但效率高

3、socket的运行流程


解释:
在传输层与应用层之间有一个socket抽象层
我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循scoket的规定去编程,写出的程序自然就是遵循tcp/udp标准的程序

4、socket = ip + port

IP是用来表示互联网中一台主机的位置,而port是用来表示这台机器上的一个应用程序;
IP地址是配置到网卡上的,而port是应用程序开启的;
所以IP与port的绑定就标识了互联网中独一无二的一个应用程序

5、socket实现的交流

服务端代码:

import socket  #服务端导入socket模块phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  #用socket实例化一个对象phone
#AF_TNET代表是基于网络传输;SOCK_STREAM代表遵循tcp协议
phone.bind(('192.168.43.247',8000))  #表明绑定一个端口,ip地址为本机ip地址phone.listen(5)  #监听;5表示最大可以挂起5个链接,多余的会在后面排队print('-------->line1')  #直接运行服务端会卡在这里等对方的链接
conn,addr = phone.accept()  #获取对方的链接和号码
print('-------->line2')#收消息
msg = conn.recv(1024)  #接收对方的链接,接收1024字节的信息
print('客户端发来的消息是:',msg)#发消息
conn.send(msg.upper())  #把发来的消息以大写的方式返回给客户端
#conn.send(msg)  #把消息发送出去conn.close()  #发送完了就关闭链接phone.close()  #再关闭整个phone,即整个socker对象

客户端代码:

import socket  #客户端也要导入socket模块phone = socket.socket(socket.AF_INET,socket.SOCK_STREAM)  #基于网络;遵循tcp协议phone.connect(('192.168.43.247',8000))  #接通服务端,接通的就是对方绑定的元组;这里使用的IP地址便为你自己电脑的IP地址#发消息
phone.send('Hello'.encode('utf-8'))  #网络传输是二进制形式,所以要编码成二进制进行传输
#127.0.0.1#conn,addr = phone.accept()
#客户端不需要再获取对方的链接和号码#收消息
msg = phone.recv(1024)  #直接用phone.recv来接收消息
print('服务端传回来的消息是:',msg)

运行服务端:

可以看到光标在跳动,等待客户端发送的消息…
所以我们接下运行客户端:

发现服务端成功接收到了消息…
同时客户端也接收到了服务端加工过的消息:

Python之网络编程(socket基础)相关推荐

  1. 网络编程Socket基础

    Socket能够实现网络上的不同主机之间或同一主机的不同对象之间的数据通信.所以,Socket已经是一类通用通信接口的集合. 地址表示数据结构   IP协议使用的地址描述数据结构,使用需要包括头文件n ...

  2. Python案例-网络编程-socket入门-serverclient

    废话不多说,上代码,具体逻辑分析详见注释,本次目的是实现一个单进程的ssh功能. 这是第一版单进程单任务的模型,随后还会有粘包处理.多进程以及ftp等实例 Server端 #!/usr/bin/env ...

  3. Java网络编程socket基础学习

    文章目录 InetAddress类 URL类 URLConnection类 使用URLConnection发送post请求 Socket类 DatagramSocket MulticastSocket ...

  4. Python高级网络编程系列之第一篇

    在上一篇中我们简单的说了一下Python中网络编程的基础知识(相关API就不解释了),其中还有什么细节的知识点没有进行说明,如什么是TCP/IP协议有几种状态,什么是TCP三次握手,什么是TCP四次握 ...

  5. python六十七课——网络编程(基础知识了解)

    网络编程: 什么是网络编程? 网络:它是一种隐形的媒介:可以将多台计算机使用(将它们连接到一起) 网络编程:将多台计算机之间可以相互通信了(做数据交互) 一旦涉及到网络编程,划分为两个方向存在,一方我 ...

  6. python网络编程知识_python六十七课——网络编程(基础知识了解)

    网络编程: 什么是网络编程? 网络:它是一种隐形的媒介:可以将多台计算机使用(将它们连接到一起) 网络编程:将多台计算机之间可以相互通信了(做数据交互) 一旦涉及到网络编程,划分为两个方向存在,一方我 ...

  7. Python零基础速成班-第12讲-Python获取网络数据Socket,API接口,网络爬虫Crawler(制作弹幕词云)

    Python零基础速成班-第12讲-Python获取网络数据Socket,API接口,网络爬虫Crawler(制作弹幕词云) 学习目标 获取网络数据Socket API接口 网络爬虫Crawler(制 ...

  8. Python网络编程socket

    网络编程之socket 看到本篇文章的题目是不是很疑惑,what is this?,不要着急,但是记住一说网络编程,你就想socket,socket是实现网络编程的工具,那么什么是socket,什么是 ...

  9. 树莓派:入门(基础配置、GPIO、网络编程 Socket)

    树莓派在创客中越来越发挥重要的作用,树莓派的强大兼用性和功能丰富,得到 DIY 朋友的青睐.带大家认识目前最新的树莓派 3B+,从零基础到入门,到动手做有趣的应用. 本场 Chat 首先会带领大家入门 ...

  10. Python网络编程(Socket)

    Python网络编程(Socket) Python提供了两个访问级别的网络服务.在一个较低的水平,您可以访问底层操作系统的基本套接字支持,允许你实现面向连接和无连接协议的客户端和服务器 Python有 ...

最新文章

  1. CLR Essential Types
  2. java常用代码总结
  3. 【ArcGIS风暴】ArcGIS+CASS点云(.las)数据生成等高线方法案例精解
  4. 可爱的朋友,你是否有很多问号
  5. linux桌面xfce美化_使用Xfce Linux桌面环境的8个理由
  6. java 装饰器_JAVA装饰器模式
  7. normandie出错重试与缓存机制对交互的影响,开发者注意
  8. efs文件解密软件_免费数据恢复软件排行榜Top10!
  9. Java知多少(9) import及Java类的搜索路径
  10. 静态嵌套类和非静态嵌套类
  11. Swift 实现图片转字符画的功能
  12. qt控制程序打开记事本_Qt 记事本程序
  13. 计算机软件 专利挖掘,专利挖掘五步法,你学会了吗?
  14. ICP算法详解——我见过最清晰的解释
  15. SSL 1203 书的复制
  16. EasyUI(DataGrid修改删除)
  17. APP支付(微信、支付宝)
  18. html职业性格测试,MBTI职业性格测试专业版
  19. 三坐标检测之精密模具检测2021
  20. gethostbyname linux,gethostbyname()

热门文章

  1. java 注释添加引用_java – 如何引用注释处理中的方法的实现?
  2. 手机鸿蒙OS框架,鸿蒙OS正式“开源”!区别于iOS和安卓,实现了真正的纯国产!...
  3. c语言求满足不等式的最小值,高手请进,请教一道简单的c语言题!
  4. mysql 处理文件函数_mysql数据处理与函数
  5. linux 类似winscp_联合使用winscp和putty管理你的linux远程机器
  6. iphone换机数据迁移_苹果与安卓,如何进行资料迁移
  7. 2013二级计算机c语言50,2013年计算机二级C语言课后模拟题五及答案
  8. u盘版linux initramfs,Linux_内核升级后 出现initramfs错误问题解决, 出现initramfs找不到/root /hos - phpStudy...
  9. oracle表ddl,七、Oracle中DDL改变表结构操作
  10. java io怎么学_Java IO 初学者 怎么都弄不出来