Python Socket网络编程(一)初识Socket和Socket初步使用

前言

       本系列博客是笔者学习Python Socket的过程笔记,目的在于记录。其中的解释都为自己的见解,仅供参考,如有错误,还望指出。本篇博客是对Python Socket的初步了解和使用,大佛请移驾。

网络编程
  • 实质

       网络编程本质就是实现两个设备之间的数据交换(通信),通常这个设备指的是计算机,实际上任何能连接网络的硬件设备都能实现通信。也就是说我们的任何能连接网络的设备都是可通信的,比如我有一个 LED显示屏,我现在需要服务器控制这个 LED屏幕显示一段文字,一些轮播图片或者一个视频,并且控制设备什么时间播放什么内容,播放多长时间等命令。那么LED和我的服务器之间就需要通信,这个时候就不是计算机与计算机之间通信了。

       在网络编程中,发起连接的一方被称作客户端(Client),等待连接的一方被称作服务器(Server)。服务端一般都需要一直启动,等待客户端来连接。连接一旦建立,双方就可以互相发送数据了。

  • IP地址和端口

       网络通信和生活中的打电话类似,我要给某个人打电话我就得知道他的电话号码,在网络中也是如此,我要和服务器建立通信就需要知道服务器的在网络中的位置。计算机在网络中的位置由IP地址(具体概念查看IP百度百科)来区分标识。建议再看看私有IP和共有IP的区别。

       一台计算机上(设备)可以运行多个程序(多个进程),为了区分这些程序就设计了端口(Port)的概念。设备最多有216=65536个端口,一个端口可以对应一个唯一程序,无论是服务端还是客户端,每个程序都对应一个或多个端口。其中0-1024之间的大多端口已经被操作系统占用,我们的程序一般就使用之后的端口号(仅仅针对计算机设备)。也就是说通过IP和端口号就可以实现两个设备的某个程序之间进行通信了。

  • 数据传输协议

       对于建立了连接的两个设备以何种方式进行数据的传输呢,传输数据的方式无论是有线传输还是无线传输,一般就两种传输协议方式:

       1. TCP(Transfer Control Protocol)

       传输控制协议方式,该传输方式是一种稳定可靠的传送方式,类似于显示中的打电话。只需要建立一次连接,就可以多次传输数据。就像电话只需要拨一次号,就可以实现一直通话一样,如果你说的话不清楚,对方会要求你重复,保证传输的数据可靠。使用该种方式的优点是稳定可靠,缺点是建立连接和维持连接的代价高,传输速度不快。

       2. UDP(User Datagram Protocol)

       用户数据报协议方式,该传输方式不建立稳定的连接,类似于发短信息。每次发送数据都直接发送。发送多条短信,就需要多次输入对方的号码。该传输方式不可靠,数据有可能收不到,系统只保证尽力发送。使用该种方式的优点是开销小,传输速度快,缺点是数据有可能会丢失。

  • 协议

       协议(Protocol)在网络里是一个重要的概念,平时所说的协议实际就是指网络协议,网络协议就是设备实现通信的规定,双方必须遵守这个规定才能获取到正确的通信信息。比如在建立连接的时候应该何种方式连接,怎么互相判别,传输的数据格式(也就是要按照一定的格式来发送和接收数据)是什么。只有遵守这个规定,设备之间才能相互通信交流。它的三要素是:语法、语义、时序。
       为了使数据在网络上从源到达目的,网络通信的参与方必须遵循相同的规则,这套规则称为协议(protocol),它最终体现为在网络上传输的数据包的格式。

Socket
  • 概念

       Socket即是套接字,Python将低级别的网络服务封装成了一个模块,通过socket就可以将网络中的两个设备的某一进程(应用程序)以TCP或者UDP协议方式建立连接,在建立连接过后就可以实现设备进程与设备进程之间的通讯了。

  • 套接字

       我们导入socket(使用import socket)模块,使用s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)来创建返回一个基于IPv4地址流式TCP传输协议的套接字s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值