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

网络编程 一

时间:2022-09-19 13:55:36浏览次数:66  
标签:soc socket 编程 网络 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,编程,网络,client,接字,端口号,客户端
From: https://www.cnblogs.com/fhy-blog/p/16707466.html

相关文章

  • 河北稳控科技可编程 USB 转串口适配器开发板芯片驱动文件说明
    可编程USB转UART/I2C/SMBusS/SPI/CAN/1-Wire适配器USB2S芯片驱动文件说明 芯片选择下拉框内列出的每一个备选芯片的驱动文件和数据手册位于S2STool工具文件夹中的......
  • CAPL编程语言快速入门
    前言  提到CAPL,相信各位一定不陌生,它是由Vector公司开发的类似于C语言的面向过程编程语言,是CANoe和CANalyzer中可用的编程语言。CAPL中程序块的执行由事件控制,在专用......
  • 自定义docker网络与自定义的网络之间的连通
    一、自定义一个docker网络1、创建一个自定义网络[root@master~]#dockernetworkcreate--driverbridge--subnet10.192.0.0/24--gateway10.192.0.1mynet806b16d......
  • 计算机网络 _ 网络层
    网际协议IP是TCP/IP体系中两个最主要的协议之一。与IP协议配套使用的还有三个协议:地址解析协议ARP(AddressResolutionProtocol)网际控制报文协议ICMP(Inter......
  • Java 异步编程 (5 种异步实现方式详解)
    ​ 同步操作如果遇到一个耗时的方法,需要阻塞等待,那么我们有没有办法解决呢?让它异步执行,下面我会详解异步及实现@mikechen目录什么是异步?一、线程异步二、Future......
  • 40. 网络加载框架Retrofit完成文件上传和下载
    40.网络加载框架Retrofit完成文件上传和下载40.1文件上传服务接口packagecom.dingjiaxiong.myretrofit;importokhttp3.MultipartBody;importokhttp3.ResponseBody;......
  • 36. 网络加载框架OkHttp的同步与异步请求
    36.网络加载框架OkHttp的同步与异步请求36.1简介官方地址https://github.com/square/okhttpandroid网络框架之OKhttp一个处理网络请求的开源项目,是安卓端最火热......
  • 38. 网络加载框架Retrofit
    38.网络加载框架Retrofit38.1Retrofit简介Retrofit是一个RESTful的HTTP网络请求框架的封装。原因:网络请求的工作本质上是OkHttp完成,而Retrofit仅负责网络请求......
  • 39. 网络加载框架Retrofit中的转换器和适配器
    39.网络加载框架Retrofit其他39.1Retrofit中的转换器在接到服务器响应后,目前无论是OKhttp还是Retrofit都只能接收到String字符串类型的数据,在实际开发中,通常需要对字符......
  • python网络爬虫常用解析器
    BeautifulSoupBeautifulSoup是一个HTML/XML的解析器,主要用于解析和提取HTML/XML数据。它基于HTMLDOM的,会载入整个文档,解析整个DOM树,因此时间和内存开销都会大很多,......