首页 > 编程语言 >python 网络编程

python 网络编程

时间:2022-09-19 14:33:50浏览次数:76  
标签:soc socket python 编程 网络 client 接字 端口号 客户端

IP地址

联网设备(电脑)每次介入网络,都会按照网络的规则,分配身份证号码,每个IP地址对应一个设备。

每次进入网络IP地址未必相同。

查看电脑IP地址windows :ipconfig

IP地址就是IP协议提供和的一种统一的地址格式,为互联网上每一个主机和每一个网络分配的逻辑地址

每个IP地址包括两个识别码(ID)就是网络id以及主机id

IP地址 = 网络id + 主机id

A类地址8位网络id(0开头)+24位主机id,范围:1.0.0.0 - 126.255.255.255

B类地址16位网络号(10开头)+16位主机号,范围:128.0.0.0 - 191.255.255.255

C类地址24位网络号(110开头)+8位主机/号,范围:192.0.0.0 - 223.255.255.255

..........

端口号

每台电脑里的应用程序和其他设备互联,需要一个端口号。端口号对应应用程序,就像ip对应设备。

就像微信联系,光知道网络中的ip地址确定了设备还不行,还要安排一个端口号给微信。

用来区别应用。

  • 一共65536个端口号
  • 0-1023 是知名端口号,众所周知的应用,比如80给http服务。
  • 1024-65536 是动态端口号 ,由系统随机分配

TCP协议

数据传输需要准守一个协议,就是TCP协议。此协议可以保证数据的安全传输。

socket

在计算机通信领域,socket 被翻译为“套接字”,它是计算机之间进行通信一种约定或一种方式。

通过 socket 这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据。

看不懂,管他的,反正数据传输需要他。

网络编程流程

QQ图片20220919120311

服务端基础流程

import socket

# 1.创建socket对象,就像是买手机
soc = socket.socket(socket.AF_INET, socket.SOCK_STREAM)  # 参数默认如此可以不填,
# 前者是IP4(网络地址类型),后边是流式套接字(套接字的类型)

# 2.绑定IP和端口 ,注册微信
soc.bind(('192.168.0.108', 8080))  # 参数必须是元组,而且IP数据是字符串,端口是数字
# IP可以不指定,表示本机IP

# 3.设置监听模式,设定连接数
soc.listen(5)

# 4.接受连接 ,
'''
accept返回值一个是 连接 客户端的套接字对象
一个是 连接 客户端的地址
也就是服务端套接字创建了新的套接字和客户端专门连接
'''
client_soc,client_ip = soc.accept()
# print(client_soc)  # <socket.socket fd=312, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.0.108', 8080), raddr=('192.168.0.108', 58986)>
# print('客户端的IP和端口号为:',client_ip)   # ('192.168.0.108', 58986) 端口号是系统分配的,因为没有指定端口号
# print(soc)    # <socket.socket fd=308, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('192.168.0.108', 8080)>

# 5.接受消息
data = client_soc.recv(1024) # 最大可接受1024字节,
data_decoded = data.decode(encoding='utf-8')    # 解码消息
print(data_decoded) # 打印出已经解码的消息

# 6.发送消息
mes = '你好。这是服务端发送的消息。'
client_soc.send(mes.encode('utf-8'))    # 发送数据,必须编码,而且必须要用客户端套接字发,

# 7.发完就可以结束了
client_soc.close()   # 关闭客户端套接字
soc.close() # 关闭服务端的套接字

客户端基本流程

import socket

# 1.创建套接字,服务端说过了,参数科可以省略,所以就没填
client_soc = socket.socket()

# 2.连接服务器,需要服务器的IP和端口号
client_soc.connect(('192.168.0.108', 8080))

# 3.发送消息
client_soc.send('你好,我是客户端。'.encode('utf-8'))

# 4.接受消息
data = client_soc.recv(1024)
print(data.decode('utf-8'))

# 5.关闭套接字
client_soc.close()

标签:soc,socket,python,编程,网络,client,接字,端口号,客户端
From: https://www.cnblogs.com/fhy-blog/p/16707592.html

相关文章

  • Python: __slots__
     __slots__定义为类属性,约束实例属性,类定义__slots__后,实例就没有__dict__ 子类和父类都定义__slots__后,子类可有全部__slots__属性  父类存在__slots......
  • python函数参数传递 可更改对象 不可更改对象
    1、函数分为内联函数和自定义函数2、参数传递:在python中,类型属于对象,变量是没有类型的例如:[1,2,3] 是List类型,"Runoob" 是String类型,而变量a是没有类型,她仅仅......
  • python lambda创建匿名函数
    注意:lambda只是一个表达式,函数体比def简单很多。lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。lambda函数拥有自己的命名空......
  • 网络编程 一
    IP地址联网设备(电脑)每次介入网络,都会按照网络的规则,分配身份证号码,每个IP地址对应一个设备。每次进入网络IP地址未必相同。查看电脑IP地址windows:ipconfigIP地址就是I......
  • 河北稳控科技可编程 USB 转串口适配器开发板芯片驱动文件说明
    可编程USB转UART/I2C/SMBusS/SPI/CAN/1-Wire适配器USB2S芯片驱动文件说明 芯片选择下拉框内列出的每一个备选芯片的驱动文件和数据手册位于S2STool工具文件夹中的......
  • CAPL编程语言快速入门
    前言  提到CAPL,相信各位一定不陌生,它是由Vector公司开发的类似于C语言的面向过程编程语言,是CANoe和CANalyzer中可用的编程语言。CAPL中程序块的执行由事件控制,在专用......
  • Python--不定长参数
    不定长参数:在定义函数的时候,参数的个数不是固定的。未来的调用者,可能自由选择不传或者传几个或者传很多定义函数:1、*args    在定义函数是用*args来接受,其......
  • 自定义docker网络与自定义的网络之间的连通
    一、自定义一个docker网络1、创建一个自定义网络[root@master~]#dockernetworkcreate--driverbridge--subnet10.192.0.0/24--gateway10.192.0.1mynet806b16d......
  • Python工具箱系列(六)
    相比较于windows下安装python,在Linux下安装python实际上是一个非常困难的选择。首先要解决的就是选择哪个发行版本的问题。Linux的内核掌握在技术团队中,但是Linux发行版本......
  • Python 与 Smalltalk 相比如何?
    Python与Smalltalk相比如何?Python是目前世界上最流行的编程语言,根据TIOBE,PYPL,和IEEE频谱.红僧将Python排在第2位。Python是两种最受欢迎​​的职位发......