【Python网络编程】利用Python进行TCP、UDP套接字编程
之前实现了Java版本的TCP和UDP套接字编程的例子,于是决定结合Python的学习做一个Python版本的套接字编程实验。
流程如下:
1.一台客户机从其标准输入(键盘)读入一行字符,并通过其套接字将该行发送到服务器。
2.服务器从其连接套接字读取一行字符。
3.服务器将该行字符转换成大写。
4.服务器将修改后的字符串(行)通过连接套接字再发回给客户机。
5.客户机从其套接字中读取修改后的行,然后将该行在其标准输出(监视器)上打印出来。
【TCP】服务器端代码:
import socket
import time
import threading s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建socket (AF_INET:IPv4, AF_INET6:IPv6) (SOCK_STREAM:面向流的TCP协议) s.bind(('127.0.0.1', 10021)) #绑定本机IP和任意端口(>1024) s.listen(1) #监听,等待连接的最大数目为1 print('Server is running...') def TCP(sock, addr): #TCP服务器端处理逻辑 print('Accept new connection from %s:%s.' %addr) #接受新的连接请求 while True:
data = sock.recv(1024) #接受其数据
time.sleep(1) #延迟
if not data or data.decode() == 'quit': #如果数据为空或者'quit',则退出
break
sock.send(data.decode('utf-8').upper().encode()) #发送变成大写后的数据,需先解码,再按utf-8编码, encode()其实就是encode('utf-8') sock.close() #关闭连接
print('Connection from %s:%s closed.' %addr) while True: sock, addr = s.accept() #接收一个新连接
TCP(sock, addr) #处理连接
【TCP】客户端代码:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) #创建一个socket s.connect(('127.0.0.1', 10021)) #建立连接 while True: #接受多次数据 data = input('请输入要发送的数据:') #接收数据 if data == 'quit': #如果为'quit',则退出
break s.send(data.encode()) #发送编码后的数据 print(s.recv(1024).decode('utf-8')) #打印接收到的大写数据 s.send(b'quit') #放弃连接 s.close() #关闭socket
运行结果:
UDP协议则不需要事先建立连接,直接互相发送数据即可。
【UDP】服务器端代码:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #创建一个socket,SOCK_DGRAM表示UDP s.bind(('127.0.0.1', 10021)) #绑定IP地址及端口 print('Bound UDP on 10021...') while True:
data, addr = s.recvfrom(1024) #获得数据和客户端的地址与端口,一次最大接收1024字节
print('Received from %s:%s.' % addr)
s.sendto(data.decode('utf-8').upper().encode(), addr)#将数据变成大写送回客户端 #不关闭socket
【UDP】客户端代码:
import socket s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) addr = ('127.0.0.1', 10021) #服务器端地址 while True:
data = input('请输入要处理的数据:') #获得数据
if not data or data == 'quit':
break
s.sendto(data.encode(), addr) #发送到服务端
recvdata, addr = s.recvfrom(1024) #接收服务器端发来的数据
print(recvdata.decode('utf-8')) #解码打印 s.close() #关闭socket
运行结果:
【Python网络编程】利用Python进行TCP、UDP套接字编程的更多相关文章
- 《Unix 网络编程》08:基本UDP套接字编程
基本UDP套接字编程 系列文章导航:<Unix 网络编程>笔记 UDP 概述 流程图 recvfrom 和 sendto #include <sys/socket.h> ssi ...
- UNIX网络编程 第8章 基本UDP套接字编程
UDP是无连接的,不需要accept,TCP通过accept API来接受连接,并且将连接客户端的信息写入到accept将返回的新socket中,该新socket中有服务端和客户端的IP地址和端口,因 ...
- TCP和UDP套接字编程 (java实现)
在了解网络编程之前,我们先了解一下什么叫套接字 套接字即指同一台主机内应用层和运输层之间的接口 由于这个套接字是建立在网络上建立网络应用的可编程接口 因此也将套接字称为应用程序和网络之间的应用程序编程 ...
- UDP,TCP的套接字编程的Python实现
UDP,TCP的套接字编程的Python实现 套接字:连接应用层和运输层,应用层的网络应用程序使用IP地址+端口号来标识自己,然后通过套接字调用运输层为其服务,网络应用程序只能指定自己要使用的网络类型 ...
- 【Java】Java网络编程菜鸟进阶:TCP和套接字入门
Java网络编程菜鸟进阶:TCP和套接字入门 JDK 提供了对 TCP(Transmission Control Protocol,传输控制协议)和 UDP(User Datagram Protoco ...
- 【Unix网络编程】chapter8基本UDP套接字编程
chapter8基本UDP套接字编程 8.1 概述 典型的UDP客户端/服务端的函数调用 8.2 recvfrom和sendto函数 #include <sys/socket.h> ssi ...
- 探索UDP套接字编程
UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...
- 【转】 探索UDP套接字编程
UDP和TCP处于同一层网络模型中,也就是运输层,基于二者之上的应用有很多,常见的基于TCP的有HTTP.Telnet等,基于UDP有DNS.NFS.SNMP等.UDP是无连接,不可靠的数据协议服务, ...
- JavaTCP和UDP套接字编程
在我们刚开始入门Java后端的时候可能你会觉得有点复杂,包含了很多杂七杂八的知识,例如文件上传下载,监听器,JDBC,请求重定向,请求转发等等(当然也没有很多),但是我们自己真正的去开发一个小型网站( ...
随机推荐
- 解决Android工程里的xml文件自动提示问题
昨天晚上看某培训机构的Android的 视频教程,看到他在写布局的XML文件时,有很方便的自动提示功能.我就在自己的Eclipse里试了一下,可是我的没实现.就到网上查,很多都说:在 Window-& ...
- Newtonsoft.Json(Json.Net)学习笔记
Newtonsoft.Json 在Vs2013中就有自带的: 下面是Json序列化和反序列化的简单封装: /// <summary> /// Json帮助类 /// </summar ...
- 搭建Go开发及调试环境(LiteIDE + GoClipse) -- Windows篇
这里以Windows7 64位为例,如果是32位环境需安装对应版本程序. 一.安装golang1.2.2 1.3及1.3.1编译生成的二进制文件,无法使用LiteIDE23.2携带的gdb7.7进 ...
- 【nodejs笔记——小知识点汇总】
1. ejs标签: <% %> , <%- %> , <%= %>的区别 ejs的标签分为三种: (1)<% code %> javasc ...
- 【发布】工业串口和网络软件通讯平台(SuperIO v2.2.4)
SuperIO 下载:本站下载 百度网盘 更新说明: 1.修复无法把数据输出给IAppService的问题,以及无法触发删除操作事件. 2.侦听端口,可以设置. 3.设备接口,增加Object属性,方 ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(24)-权限组的设计和实现(附源码)(终结)
ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 (2):数据库访问层的设计Demo (3):面向接口编程 (4 ):业务逻辑层的封装 ...
- 取消IE默认下载工具为迅雷
需求:企业访问内部WEB系统下载文件时,IE默认下载工具设置为迅雷,则弹出迅雷下载框.现需要直接弹出IE下载保存框. 方案:打开迅雷,进行撤销默认下载工具. 1.迅雷5: 1.1. 打开迅雷下载工具 ...
- 点(x3,y3)到经过点(x1,y1)和点(x2,y2)的直线的最短距离
/// <summary> /// 点(x3,y3)到经过点(x1,y1)和点(x2,y2)的直线的最短距离 /// </summary> /// <param name ...
- IIS配置文件的XML格式不正确 applicationHost.config崩溃 恢复解决办法
当打开IIS管理器,或配置网站时提示错误:配置文件的XML格式不正确 且是applicationHost.config的问题,那么肯定是applicationHost.config被破坏,IIS就崩溃 ...
- IOS开发基础知识--碎片32
1:动画属性UIViewAnimationOptions说明 a:常规动画属性设置(可以同时选择多个进行设置) UIViewAnimationOptionLayoutSubviews:动画过程中保证子 ...