python之路-网络编程
2021-07-07 17:05
标签:架构 设计 机器 控制 int 网络编程 pen 设计模式 位置 一. 楔子 两个程序之间想要传递一个数据,需要用到网络通信. 二. 软件开发的架构: 第一种: 应用类: qq,微信,网盘,优酷 这一类是属于需要安装的桌面应用. 第二种: web类: 百度,知乎,博客园,等使用浏览器访问就可以直接使用的应用. 这些应用的本质其实就是两个程序之间的通讯,而这两个分类又对应了两个软件开发的架构. 1.C/S 架构 C/S即: client与server,中文意思: 客户端与服务器端架构,这种架构也是从用户层面,(也是物理层面划分的). 2.B/S 架构 B/S即:browser和server,中文意思:浏览器端与服务器端架构,这种架构是从用户层面来划分. browser浏览器,其实也是一种client客户端,只是这个客户端不需要大家去安装什么应用程序,只是需要通过http请求服务器端相关的资源(网页资源),客户端browser浏览器就能进行增删改查. 三. 网络基础. 1. osi七层模型. 2.socket概念 socket是应用层与TCP/IP协议族通信的中间软件抽象层,他是一组接口.在设计模式中,socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在socket接口后面,对用户来说,一组简单的接口就是全部,让socket去组织数据,以符合指定的协议. 3. tcp协议和udp协议 TCP 可靠的.面向连接的协议,传输效率低全双工通信(发送缓存,接收缓存),面向字节流. 使用TCP的应用: web浏览器;电子邮件;文件传输程序. UDP 不可靠的,无连接的服务,传输效率高(发送钱延迟小),一对一,一对多,多对多,面向报文,尽最大努力服务,无拥塞控制,使用UDP的应用: 域名系统(DNS); 视频流,IP语音. 四.套接字(socket)初使用. 1. 基于TCP协议的socket tcp是基于连接的,必须先启动服务器,然后再启动客户端去连接服务器. server端 client端 问题: 重启服务端时可能会遇到, 解决方法: python之路-网络编程 标签:架构 设计 机器 控制 int 网络编程 pen 设计模式 位置 原文地址:https://www.cnblogs.com/marry215464/p/9588158.html其实站在你的角度上看,socket就是一个模块.我们通过调用模块中实现的方法
建立两个进程之间的连接和通信.
也有人将socket说成ip+port,因为ip是用来标识互联网中的一台主机的位置,
而port是用来标识这台机器上的一个应用程序,
所以我们只要确立了ip和port就能找到一个应用程序,并且使用socket模块来与之通信.import socket
sk = socket.socket()
sk.bind((‘127.0.0.1‘,8898)) #把地址绑定到套接字
sk.listen() #监听链接
conn,addr = sk.accept() #接受客户端链接
ret = conn.recv(1024) #接收客户端信息
print(ret) #打印客户端信息
conn.send(b‘hi‘) #向客户端发送信息
conn.close() #关闭客户端套接字
sk.close() #关闭服务器套接字(可选)
import socket
sk = socket.socket() # 创建客户套接字
sk.connect((‘127.0.0.1‘,8000)) # 尝试连接服务器
sk.send(b‘hello‘)
ret = sk.recv(1024) # 对话(发送/接收)
print(ret)
sk.close() # 关闭客户套接字
# 加入一条socket配置,重用ip和端口.
import socket
from socket import SOL_SOCKET,SO_REUSEADDR
sk = socket.socket()
sk.setsockopt(SQL_SOCKET,SO_REUSEADDR,1) # 就是它,在bind前加.
sk.bind(‘127.0.0.1‘,8000) #把地址绑定到套接字
sk.listen() #监听链接
conn,addr = sk.accept() #接收客户端链接
ret = conn.recv(1024) #接收客户端信息
print(ret) # 打印客户端信息
conn.send(b‘hi‘) # 向客户端发送信息
conn.close() # 关闭客户端套接字
sk.close() # 关闭服务器套接字(可选)
上一篇:奖学金---排序