Python学习日记-第二十七天-网络(udp)

目录

·网络通信的概念

·IP地址

·端口

·socket简介


前言

之前我们学习的函数,类,以及飞机大战都是在本地的,不能通过网络传输,后面学习的内容就是可以通过网络传输的。

另外最近更新的大都是以概念为主,内容相对比较枯燥,不过先学会概念,后续垒代码,理解的会更加的透彻一些。

最后温馨提示:自学不像以前读书时,有老师监督着。期间可能会有比较枯燥的章节,很多人会觉得没有必要看,不过我个人还是花一点点时间,多看看,活到老学到老

下面进入正题


一、网络通信的概念

1.   什么是网络

网络就是一种辅助双方或者多方能够连接在一起的工具

如果没有网络可想 单机的 世界是多么的孤独

2.   使用网络的目的

就是为了联通多方进行通信用的,即把数据从一方传递给另外一方

 前面学习的编写程序都是单机的,既不能和其他的电脑上的程序进行通信

为了让在不同的电脑上运行的软件,之间能够互相传输数据,就需要借助网络的功能

小总结

·使用网络能够把多方连接在一起,然后进行数据传递

·所谓的网络编程就是,让不同的电脑上的软件能够进行数据传递,即进程之间的通信


二、IP地址

IP地址目的用来标记网络上的一台电脑,比如 192.168.1.1;在本地局域网上是唯一的

IP地址分类:

A类IP地址:

一个A类IP地址有1字节的网络和3字节主机地址组成,网络地址最高位必须是0

地址范围1.0.0.1 - 126.255.255.254

二进制表示为:00000001 00000000 00000001 - 011111110 11111111 11111111 11111110

可用的A类网络有126个,每个网络能够容纳1677214个主机

B类IP地址:

一个B类IP地址有2个字节的网络地址和2个字节的主机地址组成,网络地址的最高位必须是 10

地址范围 128.1.0.1 - 255.255.254

二进制表示为:10000000 00000001 00000000 00000001 - 10111111 11111111 11111111 11111110

可用的B类网络有16384个,每个网络能容纳65534主机

C类IP地址:

一个C类IP地址由3字节的网络地址和1字节的主机地址组成,网络地址最高位必须是110

范围 192.0.2.2 - 223.255.255.254

二进制表示为:11000000 00000000 00000001 00000001 - 11011111 11111111 11111110 11111110

C类网络可达到2097152个,每个网络可以容纳254个主机

至于其他的D类,E类,以及私有IP地址,大家都可以上网搜到的,主要重点是了解C类

例子:

192.168.33.xx

前面192.168.33 前三组是用来标记网络号

后面的xx表示主机号(注:最小的数和最大的数不能使用:0和255,当主机号数量大于256之后,就可以把第三组33,当做成主机号,后面一次类推就行)

 


三、端口

端口可以比作一个房子的门,是出入这件房子的必经之路。再通俗一点,可以理解为端口就是要通过计算机接收信息软件的一个马甲,和IP地址是类似的,用于准确的传递信息给目标

如果一个程序需要收发网络数据,那么就需要有这样的端口


四、socket简介

1.   不同的电脑上的进程之间如何通信

首先解决的问题是如何唯一标识一个进程,否则通信无从说起

在1台电脑上可以通过进程号(PID)来唯一标识一个进程,但是在网络中这是行不通的

其实TCP/IP协议族已经帮我们解决了问题,网络层的IP地址,可以唯一标识网络中的主机,而传输层的协议+端口,可以唯一标识主机中的应用程序(进程)

这样利用IP地址,协议,端口就可以标识网络进程了,网络中的进程通信就可以利用这个标识与其他进程进行交互

注:

·所谓 进程 指的是:运行的程序以及运行时用到的资源这个整体称之为进程

·所谓的 进程间通信 指的是:运行程序之间的数据共享

·后面课程会详细说到,先做个了解

2.   什么是socket

Socket(简称 套接字)是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:

它能实现不同主机间的进程间通信,我们网络上各种各样的的服务大多都是基于socket来完成通信的(例如:QQ聊天,收发email,微信聊天等等)

3.   创建socket

在Python中,使用socket模块的函数socket就可以完成

说明:

函数socket.socket 创建一个socket,该函数带有两个参数:

·Address Family:可以使用AF_INET(用于Internet进程间通信)或者AF_UNIX(用于同一台机器进程之间通信),实际工作中常用AF_INET

·Type:套接字类型,可以使SOCK_STREAM(流式套接字,主要用于TCP协议)或者SOCK_DGRAM(数据报套接字,主要用于UDP协议)

语法:

import socket

# 创建TCP的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# ...这里使用套接字的功能。。。

# 不用的时候关闭套接字
s.close()
import socket

# 创建udp的套接字
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# ...这里使用套接字的功能。。。

# 不用的时候关闭套接字
s.close()

套接字使用流程与文件的使用流程类似

·创建套接字

·使用套接字收/发数据

·关闭套接字


总结

可能有一些名词或者有很多的问题不是很理解,比如说我们平时用的IP地址:168.192.1.1、或者什么是TCP,等等这些问题,不用着急,后面都会慢慢的学习的。大家先了解这些概念,一步一步的学习,先学习基础,以后写代码,当码农更加快乐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值