python入门之网络编程Scoket

article/2025/9/26 14:09:47

1、网络编程基础:

  • Sockets(套接字)可以在一个进程内,在同一机器上的进程之间,或者在不同主机的进程之间进行通信,主机可以是任何一台有连接互联网的机器。
  • Socket主要是使用IP地址,协议,端口号来标识一个进程。端口号的范围为0~65535(用户端口号一般大于1024),协议有很多种,经常用到的就是TCP,IP,UDP等;

2、python中的内置库socket

  • python中的socket库提供了处理公共传输的特定类,以及一个用于处理其余部分的通用接口。
  • socket是内置库,无需安装;

3、导入方式:

import socket

4、使用socket;

创建服务端


import socketdef server():print('服务端启动')#创建Tcp/Ip套接字对象s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) #流式Socket#创建Udp/Ip套接字对象#s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #数据报式Sockets.bind(('127.0.0.1',18080))                                      # 绑定地址s.listen(3)                                                     # 建立最多3个链接while True:conn,addr= s.accept()                                       # 等待客户端连接print('欢迎{}'.format(addr))                                #打印访问的用户信息while True:data=conn.recv(1024) dt=data.decode('utf-8')                                 #接收一个1024字节的数据 print('服务端收到:',dt)aa=input('服务端发送:') if aa=='quit':conn.close()                                        #关闭来自客户端的连接s.close()                                           #关闭服务器端连接else:conn.send(aa.encode('utf-8'))                       #发送数据

创建客户端

import socket
def client():import sysprint('客户端启动')c=socket.socket()                                           # 创建socket对象c.connect(('127.0.0.1',18080))print(c.getpeername())#获取远程的地址                              #跟服务端建立连接while True:ab=input('客户端发送:')if ab=='quit':c.close()                                               #关闭客户端连接sys.exit(0)else:c.send(ab.encode('utf-8'))                             #发送数据data=c.recv(1024)                                      #接收一个1024字节的数据print('客户端收到:',data.decode('utf-8'))                   #输出接收的信息

先启动服务端,在启动客户端,实现简单通信功能

5、以上只能实现单一通信,发送后必须等待接收,实现群聊的需要使用到多线程;

使用UDP通信
创建群聊服务端:

#群聊服务端
def serverMany():s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # 创建socket对象addr = ('127.0.0.1', 9999)s.bind(addr)  # 绑定地址和端口print('服务端启动,地址:',addr)user = {}  # 存放字典{addr:name}while True:try:data, addr = s.recvfrom(1024)  # 等待接收客户端消息存放在2个变量data和addr里if not addr in user:  # 如果addr不在user字典里则执行以下代码for address in user:  # 从user遍历数据出来addresss.sendto(data + ' 进入聊天室...'.encode('utf-8'), address)  # 发送user字典的data和address到客户端user[addr] = data.decode('utf-8')  # 接收的消息解码成utf-8并存在字典user里,键名定义为addrcontinue  # 如果addr在user字典里,跳过本次循环if 'EXIT'.lower() in data.decode('utf-8'):#如果EXIT在发送的data里name = user[addr]   #user字典addr键对应的值赋值给变量nameuser.pop(addr)      #删除user里的addrfor address in user:    #从user取出addresss.sendto((name + ' 离开了聊天室...').encode(), address)     #发送name和address到客户端else:   print('"%s" from %s:%s' %(data.decode('utf-8'), addr[0], addr[1]))  for address in user:    #从user遍历出addressif address != addr:  #address不等于addr时间执行下面的代码s.sendto(data, address)     #发送data和address到客户端except ConnectionResetError:print('服务端异常')

创建客户端;


name = '用户昵称'
def recv(sock, addr):'''一个UDP连接在接收消息前必须要让系统知道所占端口也就是需要send一次,否则win下会报错'''sock.sendto(name.encode('utf-8'), addr)while True:data = sock.recv(1024)print(data.decode('utf-8'))def send(sock, addr):'''发送数据的方法参数:sock:定义一个实例化socket对象server:传递的服务器IP和端口'''while True:string = input('正在输入:')message = name + ' : ' + stringdata = message.encode('utf-8')sock.sendto(data, addr)if string.lower() == 'EXIT'.lower():breakdef main():import threadingglobal namename = input('请输入你的名称:')'''主函数执行方法,通过多线程来实现多个客户端之间的通信'''s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)server = ('127.0.0.1', 9999)tr = threading.Thread(target=recv, args=(s, server), daemon=True)ts = threading.Thread(target=send, args=(s, server))tr.start()ts.start()ts.join()s.close()main()

在这里插入图片描述


http://chatgpt.dhexx.cn/article/ROhebh4x.shtml

相关文章

CS编程入门篇

CS编程入门 第一部分:JavaScript、NodeJs CSS HTML1.1 前端1.2 网络 第二部分:Python第三部分:Java3.1 面对过程POP(性能)、面对对象OOP(类、对象 封装、继承、多态)、面向切面AOP 第四部分&a…

Python快速编程入门课后习题答案

文章目录 前言第一章一、填空题二、判断题三、选择题四、简答题 第二章一、填空题二、判断题三、选择题四、简答题 第三章一、填空题二、判断题三、选择题四、简答题 第四章一、单选题二、判断题三、填空题四、程序分析题 第五章一、选择题二、判断题三、填空题四、简答题五、程…

编程入门

这篇文章是特地为对编程有兴趣的同学特意准备的,非战斗人员请速速撤离。 0.选择一门编程语言 选择语言的话不需要纠结太多(但是不推荐易语言之流:),因为编程语言都是大同小异。并且在你精通一门语言之后再去学另一种编程语言时,你会发现卧槽要死要死,这么简单。 如果你…

Windows网络编程入门:简单的客户端和服务器通信程序调试

昨日入手Windows网络编程经络这本书,第一章给了Echo客户端和服务器的简单通信实例程序。从小白到入门目测都是比较苦逼,居然想不到怎么来测试结果。什么同时运行啊、分别编译运行啊乱七八糟的想法就开始冒。最后还是解决了。 1.运行“服务器.exe”文件 …

编程算法同步入门

课程内容 开篇词 | 为什么我们要学习编程? 为什么需要学习编程? 如今,学习编程的人分为两类,一类是程序员,另一类是期望成为程序员的人。 编程这个事儿,在大多数人眼中还是一种特定领域的、专门的技能,认为学的人都是需要以此谋生的。 其实,作为一个“码龄”超过2…

编程入门硬件部分

01 概述 02 计算机硬件 冯 诺依曼体系结构 每台计算机都有一个内部时钟,该时钟以固定速度发射电子脉冲。时钟速度越快,在给 定的时间段内执行的指令就越多。速度的计量单位是 赫兹 ( 1Hz 相当于每秒 1 个脉 冲 。 随着 CPU 速度不断提高,目前…

C# Socket网络编程入门(服务器与客户端通信,客户端与客户端通信)

WebSocket全双工通讯链接,用于前台和后台自由发送信息 一.效果展示: 效果描述: 1.服务器充当管理员,给所有人发送信息,除服务器以外其他人都能接受到。 2.其他用户发送信息除自己以外其他用户和管理员全能接受到。 …

TCP/IP网络编程 学习笔记_1 --网络编程入门

前言:这个系列网络编程教程实例代码是在Xcode上运行的,MacOSX,是一个基于UNIX核心的系统,所以基于Linux的网络编程代码一般可以直接在Xcode上运行,如果要移植到Windows其实就只需要稍微改下,本章下面有讲Wi…

Scratch编程入门

Scratch编程入门 Scratch是麻省理工学院的“终身幼儿园团队”(Lifelong Kindergarten Group)开发的图形化编程工具,免费。2019年1月2日正式发布, Scratch3.0。 Scratch把计算机执行的指令、逻辑变成了小朋友能看明白的“积木”,…

C语言网络编程——基础

OSI七层参考模型 是理想化的并没有完全实现的模型。 应用层 提供响应的应用服务 表示层 数据的表示和加密 会话层 建立会话关系 传输层 通过传输协议传输数据 网络层 实现跨子网通信,路由转发,维护路由表。 数据链路层 实现以太网内数据帧的转发 …

matlab 神经网络编程入门系列(1)

本文主要内容包括: (1) 介绍神经网络基本原理,(2) Matlab实现前向神经网络的方法 。 第0节、引例 本文以Fisher的Iris数据集作为神经网络程序的测试数据集。 由于英文的类无法识别,故需要把对应的类用数字标识,数据集变成&…

WinPcap网络编程入门——0. 环境配置及系列介绍

WinPcap网络编程入门——0. 环境配置及系列介绍 系列教程章节直达: Winpcap网络编程入门——1. 获取设备列表; 说明:本教程适用于网络编程开发人员入门,将从底层分析 WinPcap 的执行过程,结合一些实际用例来学习 WinP…

Java核心类库之(网络编程:网络编程入门、UDP通信程序、TCP通信程序)

目录 1 网络编程入门1.1 网络编程概述1.2 网络编程三要素1.3 IP地址1.4 InetAddress的使用1.5 端口1.6 协议 2 UDP通信程序2.1 UDP通信原理2.2 UDP发送数据2.3 UDP接收数据2.4 范例 3 TCP通信程序3.1 TCP通信原理3.2 TCP发送数据3.3 TCP接收数据3.4 案例3.4.1 练习一&#xff1…

Java网络编程入门(软件结构、网络通信协议、网络编程三要素)

文章目录 🐕软件结构🐶网络通信协议🦁协议分类🐅网络编程三要素🐆协议🐎IP地址🦌端口号 🐕软件结构 C/S结构 :全称为Client/Server结构,是指客户端和服务器结…

黑客编程入门 之 网络编程入门

网络编程入门 前言Socket技术详细介绍Socket 编程所需函数服务器/客户 代码 前言 “任何职业都可以成为黑客。你可以是一个木匠黑客。不一定是高科技。只要与技能有关,并且倾心专注于你正在做的事情,你就可能成为黑客。” ——引自《黑客伦理与信息时代精…

WinPcap网络编程入门——1. 获取设备列表

WinPcap网络编程入门——1. 获取设备列表 系列教程章节直达: Winpcap网络编程入门——1. 获取设备列表; 上节中我们简单介绍了 WinPcap 的相关资料,配置好了开发环境,现在就让我们正式开始网络编程开发吧! 1. 基本开…

网络编程入门(代码很详细)

网络编程 1.1概述 计算机网络:计算机网络是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算…

网络编程——(1)网络编程入门

一、软件架构 1.1C/S结构: 全称Client/Server结构,是指客户端和服务器结构。常见的程序有QQ、迅雷等。 1.2 B/S结构: 全称为Browser/Server结构,是指浏览器和服务器结构。常见浏览器有谷歌、火狐等。 两种架构各有优势&#xf…

网络编程入门

1.网络编程入门 1.1网络编程概述 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 网…

线性代数学习笔记——第六讲——矩阵的转置

1. 矩阵转置的定义(矩阵的行和列互换位置) 2. 矩阵转置的性质之一:矩阵转置一次后再转置一次,等于矩阵自身(有点像一个两状态开关,在开与关之间来回切换) 3. 对称矩阵的充要条件是矩阵转置一次后…