博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第三章-网络编程基础
阅读量:4594 次
发布时间:2019-06-09

本文共 2101 字,大约阅读时间需要 7 分钟。

  1,套接字:一种基于文件的套接字,AF_UNIX,(早期socket源自于Unix系统而研发的一个主要功能,主要是为了同一台电脑,多个程序直接通信)

Unix系统中心思想:一切皆文件

  2,一种基于网络类型的套接字,AF_INET

  3,TYPE:

tcp协议:SOCK_STREAM

UDP协议:SOCK_DGRAM

4,tcp:可靠的,面向连接的,面向字节流的传输方式

5,udp: 不可靠的,不需面向连接的,面向数据报的传输方式,但很快
6,网关:类似于一个局域网的出口和入口 7,网段:一个局域网内的ip地址范围 8,子网掩码:子网掩码 & ip地址 等到网段 9,osi五层模型:     应用层 :http,https,ftp     传输层 :tcp/udp 四层交换机,四层路由器     网络层 :ip协议 路由器 三层交换机     网络链路层 :arp协议 以太网交换机 网卡 网桥     物理层 :传输电信号 集线器 网线 光纤
a. 同一台电脑上连个py程序:打开一个文件 b, 两个电脑如何通信:连接一根网线 c, 多台电脑通信:         ex: 电脑1(源)找电脑2(目标)         电脑1首先发送一个请求帧(其中包括我的ip地址,mac地址,要找的目标的ip地址),         交换机广播这条信息给其他主机         目标主机接收到消息,对比发现自己就是被找的目标,回复交换机,将自己的ip地址,mac地址         ,返回给ip地址为xxxxxx的主机         交换机单波形式返回给主机 知识点:     1. mac地址:是一个物理地址,全球唯一,类似身份证     2,ip地址:是一个四位点分十进制,它标识了计算机在网络的位置     3,arp协议: 通过目标的ip地址获取目标的mac地址的一个协议     4,端口:操作系统为主机上的每一个应用程序都随机分配了一个端口
TCP协议编程流程:     服务器端                客户端     实例化对象               实例化对象     绑定IP地址和端口       监听     接收客户端的连接       连接服务器     收发                       收发     关闭                       关闭 交换机与路由器的区别? 交换机的主要功能是组织局域网,经过交换机内部处理解析之后,将信息点对点,点对多的形式,发送给固定端 路由器的主要功能:进行跨网段进行数据传输,路由器选择最佳路径 EX:   如果你须将多台电脑连接到一根网线,用交换机即可   如果你只有一个外网IP,但是你有好多台电脑需要上网,用路由器即可
 
# 案例1 通信import socketimport timesk = socket.socket()  # 买了一个手机sk.bind(('192.168.1.107',18080))    # 买了一张手机卡sk.listen()     # 开机sock,addr = sk.accept() # 等待朋友连接msg_recv = sock.recv(1024)  # 接收朋友传来的bytes信息sock.send(b'library')print(msg_recv.decode('utf-8')) # 进行解码time.sleep(20)sock.close()    # 关闭电话sk.close()      # 关机
 

 

 
import socketclass MySocket(socket.socket):      # 继承socket文件中的socket类    def __init__(self,encoding='utf-8'):    # 给它一个默认的utf-8编码格式        self.encoding = encoding    # 将utf-8编码格式封装给encoding        super(MySocket, self).__init__(type=socket.SOCK_DGRAM)  # 执行父类中的__init__方法,将默认tcp协议改成udp协议    def my_sendto(self,msg,addr):   # 定义一个发消息类        return self.sendto(msg.encode(self.encoding),addr)  # 调用父类中的sendto方法    def my_recvfrom(self,num):  # 定义一个接收方法        msg_r,addr = self.recvfrom(num) # 调用父类中的recvfrom方法        return msg_r.decode(self.encoding),addr
 

 

 

 

 
 

转载于:https://www.cnblogs.com/jiujiang/p/11449598.html

你可能感兴趣的文章
hnu 10490
查看>>
Timus 1031
查看>>
ASP.NET-SOAP、UDDI知识点
查看>>
Java web 文件下载
查看>>
linux ssh搭建
查看>>
elasticsearch 7 安装
查看>>
Java实现打印功能
查看>>
Centos使用LVS+keepalive 搭建集群原理详解
查看>>
Objective-C 的三种 Callbacks 机制
查看>>
[luogu2982][USACO10FEB]慢下来Slowing down(树状数组+dfs序)
查看>>
11.07 scrum report
查看>>
分层图最短路 【bzoj1579】[Usaco2009 Feb]Revamping Trails 道路升级
查看>>
Affinity Propagation Demo1学习
查看>>
ubuntu安装IBM DB2 Express-C
查看>>
FastReport.Net使用:[32]对话框使用2
查看>>
ORACLE的init.ora配置文件中参数详解
查看>>
作业小结2
查看>>
老师给小孩子分糖
查看>>
【python】logging记录traceback
查看>>
>>我要到处浪系列 之 JS随便投票小脚本
查看>>