python:socket基础操作(1)-《环境准备介绍》

news2024/12/23 4:12:48

我这里的环境是在真机上下载了一个 pycharm 进行编写

并且还开了两台虚拟机

一台为win7  下载了一个网络调试助手,因为等会编写的时候分为客户端和服务端,当我们编写了客户端或者服务端,可以用图形化的网络调试助手去当对象,图形化简单易上手

另一台为Ubuntu,直接把python3下载好,当我们自己编写完客户端和服务端,把另一半放到ubuntu上直接跑就行

具体的安装软件安装过程我就不做过多的介绍,如果不会安装py3的环境或者pycharm网上一搜教程就一大堆


这几章节我会简单的介绍一下socket套接字的基础用法,不会太过深入


套接字的介绍 

套接字(Socket)是计算机网络编程中的一种抽象概念,它提供了一种通信机制,使得不同计算机之间可以进行数据交换和通信。套接字可以看作是网络通信的端点,通过套接字可以建立网络连接、发送和接收数据。

  1. 地址族(Address Family):套接字使用地址族来指定网络协议的类型。常见的地址族包括 IPv4(AF_INET)、IPv6(AF_INET6)和本地套接字(AF_UNIX)。地址族定义了套接字的寻址方式和网络协议。

  2. 套接字类型(Socket Type):套接字类型定义了套接字的通信方式。常见的套接字类型包括流套接字(SOCK_STREAM)和数据报套接字(SOCK_DGRAM)。流套接字提供可靠的、面向连接的通信,而数据报套接字提供无连接的、不可靠的通信。

  3. 协议(Protocol):套接字在创建时可以指定特定的协议。如果地址族和套接字类型都指定了默认协议,可以省略该参数。常见的协议包括 TCP(IPPROTO_TCP)和 UDP(IPPROTO_UDP)。

  4. 套接字通信模型:套接字通信可以使用两种主要模型:面向连接和无连接。面向连接模型使用 TCP 协议,在通信之前需要建立连接,然后进行可靠的、有序的数据传输。无连接模型使用 UDP 协议,每个数据包都是独立的,不需要建立连接,但可能面临丢失、重复、乱序等问题。

  5. 套接字地址:套接字通过地址来标识和定位网络上的特定进程或主机。对于 IPv4 地址,通常由 IP 地址和端口号组成;对于 IPv6 地址,由 IPv6 地址和端口号组成。套接字地址用于建立连接、发送和接收数据。

  6. 套接字操作:套接字提供了一组操作来进行网络通信。这些操作包括创建套接字、绑定地址、监听连接、接受连接、建立连接、发送数据、接收数据和关闭套接字等。

  7. 套接字选项:套接字提供了一些选项,用于设置套接字的行为和属性。例如,设置套接字的超时时间、启用广播、复用地址等。

  8. 阻塞和非阻塞套接字:套接字可以设置为阻塞或非阻塞模式。在阻塞模式下,套接字的操作会一直阻塞,直到完成或出错。在非阻塞模式下,套接字的操作会立即返回,无论是否完成。

当涉及到网络编程时,Python 的 socket 模块是一个非常有用的工具。它提供了一种用于创建和操作网络套接字的高级接口。通过使用 socket 模块,您可以构建各种网络应用程序,包括客户端和服务器。

下面是对 Python socket 模块的详细介绍:

  1. 创建套接字:使用 socket.socket() 函数创建套接字对象。它接受两个参数,第一个参数是地址族(如 socket.AF_INET 表示 IPv4,socket.AF_INET6 表示 IPv6),第二个参数是套接字类型(如 socket.SOCK_STREAM 表示 TCP,socket.SOCK_DGRAM 表示 UDP)。

  2. 绑定地址:对于服务器,需要将套接字绑定到一个特定的地址和端口上,以便客户端可以连接到它。使用 socket.bind() 方法将套接字绑定到指定的地址和端口。

  3. 监听连接:对于服务器,可以使用 socket.listen() 方法开始监听连接。它接受一个参数,指定在连接队列中等待的最大连接数。

  4. 接受连接:服务器可以使用 socket.accept() 方法接受客户端的连接请求。它返回一个新的套接字对象和客户端的地址,通过该套接字可以与客户端进行通信。

  5. 建立连接:客户端可以使用 socket.connect() 方法连接到服务器。它接受一个参数,指定服务器的地址和端口。

  6. 发送和接收数据:通过套接字对象的 send() 和 receive() 方法,可以发送和接收数据。对于 TCP 套接字,使用 send() 发送数据,使用 recv() 接收数据;对于 UDP 套接字,使用 sendto() 发送数据,使用 recvfrom() 接收数据。

  7. 关闭套接字:使用 socket.close() 方法关闭套接字连接。

这只是 socket 模块的基本用法,它还提供了其他功能,如设置套接字选项、获取套接字信息、处理异常等。您可以查阅 Python 官方文档或其他网络编程教程,以获得更详细的信息和示例代码。

需要注意的是,网络编程涉及到网络安全和错误处理等复杂的问题。在实际应用中,您可能需要处理超时、异常情况、数据的编码和解码等。确保在编写网络应用程序时,对这些问题进行适当的处理和安全考虑。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1403268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux】常见指令(一)

前言: Linux有许多的指令,通过学习这些指令,可以对目录及文件进行操作。 文章目录 一、基础指令1. ls—列出目录内容2. pwd—显示当前目录3. cd—切换目录重新认识指令4. touch—创建文件等5. mkdir—创建目录6. rmdir指令 && rm 指令7. man—显…

JVM实战篇:GC调优

目录 一.GC调优的核心指标 1.1吞吐量(Throughput) 1.2延迟(Latency) 1.3内存使用量 二.GC调优的方法 2.1监控工具 Jstat工具 VisualVm插件 Prometheus Grafana 2.2诊断原因 GC日志 GC Viewer GCeasy 2.3常见的GC模…

Java:扫码登录

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 目录 一、需求背景 二、问题分析 三、对比APP和打印机设备的特点 四、设计 五、编码 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、…

网络要素服务(WFS)详解

文章目录 1. 概述2. GetCapabilities3. DescribeFeatureType4. GetFeature4.1 Get访问方式4.2 Post访问方式 5. Transaction5.1 Insert5.2 Replace5.3 Update5.4 Delete 6 注意事项 1. 概述 前置文章: 地图服务器GeoServer的安装与配置 GeoServer发布地图服务&#…

洛谷P2911 [USACO08OCT] Bovine Bones G(C语言)

看到这么小的数据范围&#xff0c;那当然是暴力枚举啦&#xff01;况且这还是入门题&#xff0c;怎么可能如此难为我这种萌新呢。 我的思路是用数组下标来记录次数 ch[ijq]; 这就是用三个数的和当做下标 然后后面就是遍利数组找出要的值 # include <stdio.h> int main …

Windows 下ffmpeg安装及实践

Windows 下ffmpeg安装及实践 背景安装实践其他 背景 最近负责音频文件处理相关的业务&#xff0c;涉及到 ffmpeg 对一些音频文件格式的校验&#xff0c;记录一下安装过程及踩坑过程。 安装 如图1所示&#xff0c;进入官网&#xff0c;在windows下任选一个文件&#xff1a;h…

七、文件与目录操作

一、文本文件读写 文件打开方式QIODevice::ReadOnly 以只读方式打开 QIODevice::QriteOnly 以只写方式打开 QIODevice::ReadWrite 以读写方式打开 QIODevice::Append 新增加的内容将被追加到文件末尾 QIODevice::Truncate 以重写的方式打开&#xff0c;原有内容会被删除 QI…

makefile 编译动态链接库使用(.so库文件)

makefile 编译动态链接库使用&#xff08;.so库文件&#xff09; 动态链接库:不会把代码编译到二进制文件中&#xff0c;而是在运行时才去加载&#xff0c; 好处是程序可以和库文件分离&#xff0c;可以分别发版&#xff0c;然后库文件可以被多处共享 动态链接库 动态&#…

java servlet 学生成绩查询管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web学生成绩查询管理系统是一套完善的java web信息管理系统 采用servlet dao bean&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用 B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发…

插混、增程、纯电为什么说纯电是未来的趋势

技术路线&#xff1a;插混、增程、纯电趋势判断 新能源汽车目前有纯电动、增程式、插电式3 种主流技术路径&#xff0c;其中增程式和插电式均为混动技术。纯电动汽车是指以动力电池为动力&#xff0c;用电机驱动车轮行驶&#xff1b;混动技术分为串联、并联、混联3 种模式&…

一个 web版linux、数据库、redis、mongo统一管理操作平台

mayfly-go&#xff1a;一个 web版linux、数据库、redis、mongo统一管理操作平台 功能介绍 linux&#xff1a; ssh终端(终端操作记录回放)&#xff0c;文件查看&#xff08;可根据常见后缀名高亮显示关键词等&#xff09;、修改、上传、下载、删除等&#xff0c;脚本管理执行&…

Spring5系列学习文章分享---第一篇(概述+特点+IOC原理+IOC并操作之bean的XML管理操作)

目录 Spring&#xff08;概述特点IOC原理IOC并操作之bean的XML管理操作&#xff09;概述Spring是轻量级的开源的JavaEE框架Spring可以解决企业应用开发的复杂性Spring有两个核心部分ioc,aopSpring特点 loc(概念和原理)什么是 IOCIOC 底层原理IOC 过程图 IOC&#xff08;接口&am…

蓝桥杯重要知识点和赛题直通车

<蓝桥杯软件赛>零基础备赛20周 第 1周(2023-10-23): 蓝桥杯软件赛介绍官方链接零基础能得奖吗&#xff1f; 第 2周(2023-10-30): 常考知识点蓝桥杯怎么判题备赛计划 第 3周(2023-11-06): 填空题&#xff08;分数少但越来越不好做&#xff09; 第 4周(2023-11-13): &#…

免费在线压缩图片网站分享

支持批量压缩处理&#xff0c;但需要注意&#xff0c;网站仅仅支持体积为5MB的图片&#xff0c;压缩率高达66%&#xff0c;压缩完成后&#xff0c;点下Donwnload all&#xff0c;就能将图片保存至本地。 网页端直接进行图片压缩 https://tinify.cn/

软件测试到底是选择自学还是报培训机构(纯个人经验分享)----分享给正在迷茫的学弟学妹们!

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…

IOS工程师,再不转型!失业在所难免!

随着智能手机的快速普及&#xff0c;移动应用开发成为了一个炙手可热的职业。而在手机市场上&#xff0c;以前主要是iOS和Android是两个操作系统。近几年在中国市场上&#xff0c;iPhone手机销量持续下滑&#xff0c;与之相反&#xff0c;华为手机一直处于领先地位。这对于从事…

【立创EDA-PCB设计基础】3.网络表概念解读+板框绘制

前言&#xff1a;本文对网络表概念解读板框绘制&#xff08;确定PCB板子轮廓&#xff09; 网络表概念解读 在本专栏的上一篇文章【嘉立创EDA-PCB设计指南】2&#xff0c;将设计的原理图转为了PCB&#xff0c;在PCB界面下出现了所有的封装&#xff0c;以及所有的飞线属性&…

数据集笔记:UJIIndoorLoc

1 数据集介绍 UJIIndoorLoc - UCI Machine Learning Repository UJIIndoorLoc是一个多建筑多楼层的室内定位数据库&#xff0c;用于测试依赖于WLAN/WiFi指纹的室内定位系统。 2 数据读取 数据分类训练数据和测试数据 import pandas as pdapd.read_csv(Downloads/ujiindoo…

Bit Extraction and Bootstrapping for BGV/BFV

参考文献&#xff1a; [GHS12] Gentry C, Halevi S, Smart N P. Better bootstrapping in fully homomorphic encryption[C]//International Workshop on Public Key Cryptography. Berlin, Heidelberg: Springer Berlin Heidelberg, 2012: 1-16.[AP13] Alperin-Sheriff J, Pe…

Python文件操作和异常处理:高效处理数据的利器

文章目录 一、引言1.1 文件操作和异常处理对于编程的重要性1.2 Python作为实现文件操作和异常处理的强大工具 二、为什么学习文件操作和异常处理2.1 处理各种文件格式&#xff1a;从文本到图像到音频等2.2 确保代码的鲁棒性&#xff1a;有效处理异常情况 三、文件读取和写入3.1…