关键词:
套接字介绍
1.套接字 : 实现网络编程进行数据传输的一种技术手段
2.Python实现套接字编程:import socket
3.套接字分类
- 流式套接字(SOCK_STREAM): 以字节流方式传输数据,实现tcp网络传输方案。(面向连接--tcp协议--可靠的--流式套接字)
- 数据报套接字(SOCK_DGRAM):以数据报形式传输数据,实现udp网络传输方案。(无连接--udp协议--不可靠--数据报套接字)
UDP套接字编程
服务端流程
1.创建数据报套接字
sockfd = socket(AF_INET,SOCK_DGRAM)
2.绑定地址
sockfd.bind(addr)
3.消息收发
data,addr = sockfd.recvfrom(buffersize)
- 功能: 接收UDP消息
- 参数: 每次最多接收多少字节
- 返回值: data 接收到的内容
- addr 消息发送方地址
n = sockfd.sendto(data,addr)
- 功能: 发送UDP消息
- 参数: data 发送的内容 bytes格式
- addr 目标地址
- 返回值:发送的字节数
4.关闭套接字
sockfd.close()
1 """ 2 重点代码 3 """ 4 5 from socket import * 6 7 # 创建套接字 8 sockfd = socket(AF_INET, SOCK_DGRAM) 9 10 # 绑定地址 11 server_addr = (‘127.0.0.1‘, 8888) 12 sockfd.bind(server_addr) 13 14 # 收发消息 15 while True: 16 data, addr = sockfd.recvfrom(1024) 17 print("收到的消息:", data.decode()) 18 sockfd.sendto(b‘Receive‘, addr) 19 20 # 关闭套接字 21 sockfd.close()
客户端流程
1.创建套接字
2.收发消息
3.关闭套接字
1 """ 2 重点代码 3 """ 4 5 from socket import * 6 7 # 服务端地址 8 ADDR = (‘127.0.0.1‘,8888) 9 10 # 创建套接字 11 sockfd = socket(AF_INET,SOCK_DGRAM) 12 13 # 循环发送消息 14 while True: 15 data = input("Msg>>") 16 if not data: 17 break 18 sockfd.sendto(data.encode(),ADDR) 19 msg,addr = sockfd.recvfrom(1024) 20 print("From server:",msg.decode()) 21 22 sockfd.close()
练习 : 使用udp完成单词查询,要求一个服务端拥有单词本,从客户端可以循环输入单词,得到单词解释.客户端可以直接回车或者发送特殊字符表示退出
1 from socket import * 2 3 DICT_TEXT = ‘./dict.txt‘ 4 5 def find_word(word): 6 f = open(DICT_TEXT) 7 for line in f: 8 tmp = line.split(‘ ‘)[0] 9 # 遍历的单词已经大于目标 10 if tmp > word: 11 return "没有找到该单词" 12 elif tmp == word: 13 return line 14 else: 15 return "没有找到该单词" 16 17 s = socket(AF_INET,SOCK_DGRAM) 18 s.bind((‘0.0.0.0‘,8888)) 19 20 while True: 21 data,addr = s.recvfrom(1024) 22 mean = find_word(data.decode()) 23 s.sendto(mean.encode(),addr) 24 25 s.close() 26 -------------------------------------- 27 """ 28 udp客户端流程 29 """ 30 31 from socket import * 32 33 # 服务端地址 34 ADDR = (‘127.0.0.1‘,8888) 35 36 # 创建套接字 37 sockfd = socket(AF_INET,SOCK_DGRAM) 38 39 # 循环发送消息 40 while True: 41 data = input("Word>>") 42 if not data: 43 break 44 sockfd.sendto(data.encode(),ADDR) 45 msg,addr = sockfd.recvfrom(1024) 46 print("From server:",msg.decode()) 47 48 sockfd.close()
网络编程:套接字socket(代码片段)
socket是基于C/S架构的,也就是说进行socket网络编程,通常需要编写两个py文件,一个服务端,一个客户端。首先,导入Python中的socket模块:importsocket其通信逻辑如下图所示:这张图片是整个socket编程的基础,必须牢牢记住。通过... 查看详情
python之socket网络编程(代码片段)
socket解释socekt又称为‘套接字’,用于描述IP和地址端口,是一个通信链路的句柄,应用程序通常通过套接字向网络发出请求或者应答网络请求。socket起源于Unix,所以也遵从“一切皆文件”的基本哲学,对于文件,... 查看详情
python3网络编程(代码片段)
文章目录一、Python3网络编程总结一、Python3网络编程Python提供了两个级别访问的网络服务。:低级别的网络服务支持基本的Socket,它提供了标准的BSDSocketsAPI,可以访问底层操作系统Socket接口的全部方法。高级别的网络... 查看详情
python之socket编程(代码片段)
一、socket简介socket(套接字)是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,将复杂的TCP/IP协议族隐藏在接口后面,让socket去组织数据以符合指定的协议。 下图左为socket在tcp/ip协议中的角色,右为socket的工作流... 查看详情
python网络编程——设定并获取默认的套接字超时时间(代码片段)
Sometimes,youneedtomanipulatethedefaultvaluesofcertainpropertiesofasocketlibrary,forexample,thesockettimeout.设定并获取默认的套接字超时时间。1.代码1importsocket234deftest_socket_timeout():5s=socket.socket(socket.AF_INE 查看详情
【socket】关于unix域套接字(unixdomainsocket)
...上发展出一种IPC机制,就是UDS。UnixDomainSocket(UDS,Unix域套接字),它还有另一个名字叫IPC(inter-processcommunication,进程间通信)。使用UDS的好处显而易见:不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应... 查看详情
10.网络编程之socket(代码片段)
目录一、什么是socket?1.1套接字简介1.2套接字地址:主机-端口对二、面向连接的套接字和为无连接的套接字2.1面向连接的套接字2.2无连接的套接字三、python中socket3.1socket()模块函数3.2套接字对象(内置)方法3.3Socket中的一些参数四... 查看详情
socket网络编程
Python提供了两个级别访问的网络服务: 低级别的网络服务支持基本的Socket,它提供了标准的BSDSocketsAPI,可以访问底层操作系统Socket接口的全部方法 高级别的网络服务模块SocketServer,它提供了服务器中心类,可以简化网... 查看详情
python学习-网络编程(代码片段)
socketsocket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。socket与file的却别:file是对指定文件进行打开,读写,关闭socket是对服务器和客户端的socket进... 查看详情
python网络编程之tcp客户端程序开发
一、开发TCP客户端程序开发步骤回顾创建客户端套接字对象和服务端套接字建立连接发送数据接收数据关闭客户端套接字二、socket类的介绍导入socket模块 importsocket创建客户端socket对象 socket.socket(AddressFamily,Type)参数说明:Ad... 查看详情
python网络编程基础--socket的简介,以及使用socket来搭建一个简单的udp小程序(代码片段)
socket介绍:socket(简称套接字),是进程间通讯的一个工具,他能实现把数据从一方传输到另一方,完成不同电脑上进程之间的通讯,它好比数据的搬运工。socket应用:不夸张来说,只要跟网络相关的应用程序或者软件都使用到了soc... 查看详情
Python Socket 编程 简单的 Web 服务器
...2015-02-1423:00:29【问题描述】:我正在编写我的第一个Python套接字编程代码,但我不知道出了什么问题。我输入运行该程序的服务器的IP地址以及端口号和我尝试接收的文件。我应该在浏览器中接收文件并且套接字应该关闭。相反... 查看详情
python爬虫第二课网络编程基础(代码片段)
2.1认识Python网络编程套接字(socket)网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。套接字是socket的通常叫法,用于描述IP地址和端口,是一个通信链的句柄,... 查看详情
python爬虫第二课网络编程基础(代码片段)
2.1认识Python网络编程套接字(socket)网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。套接字是socket的通常叫法,用于描述IP地址和端口,是一个通信链的句柄,... 查看详情
python学习笔记-scoket编程基础(代码片段)
socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求。socket起源于Unix,而Unix/Linux基本哲学之一就是“一切皆文件”,对于文件用【打开】... 查看详情
socket
socket 在网络编程中个一个基本组件就是套接字(socket)。套接字基本上是两个端点的程序之间的‘信息通道‘。程序可能分布在不同的计算机上(通过网络连接),通过套接字相互发送信息。在Python中大多数的网络编程都隐... 查看详情
python网络编程之tcp服务端程序开发
一、开发TCP服务端程序开发步骤回顾创建服务端端套接字对象绑定端口号设置监听等待接受客户端的连接请求接收数据发送数据关闭套接字二、socket类的介绍导入socket模块importsocket创建服务端socket对象socket.socket(AddressFamily,Ty... 查看详情
python网络编程——处理套接字错误(代码片段)
在网络应用中,经常会遇到这种情况:一方尝试连接,但另一方由于网络媒介失效或者其他原因无法响应。Python的Socket库提供了一个方法,能通过socket。error异常优雅地处理套接字错误。1.代码及相关解释1#!/usr/bin/envpython2#-*-codi... 查看详情