Python网络编程之Socket的简单实现
一、引入
关于Python的网络编程,最基础莫过于socket了。
socket,又称“套接字”,网络上的两个程序如果想要实现双向的数据通信,需要建立连接,这个连接的一端就称为一个socket。
python中有一个模块socket,在这个模块中可以找到socket()函数,该函数用于创建套接字对象。根据所用协议的不同(TCP/IP和UDP/IP),可以创建两类socket。下面贴上一个TCP/IP类的socket实例。
二、创建TCP服务器
__author__ = "JentZhang" from socket import *
from time import ctime HOST = '127.0.0.1' #服务器地址
PORT = #服务器端口
BUFIZE = #接受数据的大小
ADDR = (HOST, PORT) #创建socket时用到的地址(就是将服务器地址和端口写成一个元组的形式) tcpSerSock = socket(AF_INET, SOCK_STREAM) #创建socket连接(AF_INET表示IPV4,SOCK_STREMAM表示TCP协议 )
tcpSerSock.bind(ADDR) #绑定地址
tcpSerSock.listen() #开始监听端口,参数5表示可以接收的连接数量 while True: #循环接受多个客户端发来的请求
try:
print('Watting for connection...')
tcpCliSock, addr = tcpSerSock.accept() #当有客户端发来请求时,通过accept()方法来接受,返回参数有两个,可以自行print出来,看看是什么
print('...connected from :', addr) while True: #循环接受客户端发来的消息
data = tcpCliSock.recv(BUFIZE) #接受客户端发来的消息,接收到的是一个byte类型的数据
if not data: #当用户发送空字符串的是时候,跳出循环,重新接收数据
break
print('接收到数据:', data)
tcpCliSock.send(b'[%s] % s' % (ctime().encode(), data)) #将接收到的数据加上时间戳返回回去,同样返回的数据需要是byte类型
except ConnectionResetError as e: #当客户端关闭连接时,catch这个错误做出相应的提示
print(e)
print('%s:%s 退出了' % (addr[], addr[])) #服务端也关闭相关的socket连接
finally:
tcpCliSock.close()
tcpSerSock.close()
三、创建客户端
__author__ = "JentZhang" from socket import * HOST = '127.0.0.1'
PORT =
BUFSIZE =
ADDR = (HOST, PORT) tcpCliSock = socket()
tcpCliSock.connect(ADDR) #建立连接 while True:
msg = input('>>') #输入要发送的内容
if not msg: #如果发送内容为空,则重新发送
break
tcpCliSock.send(msg.encode()) #发送byte类型的数据 data = tcpCliSock.recv(BUFSIZE) #接受服务端的返回
if not data: #如果服务端返回为空,则重新发送
break print(data.decode())
tcpCliSock.close()
四、效果预览
1.分别启动服务端和客户端,注意先启动服务端。


2.发送数据


3.断开连接

五、总结概括
简单的做了一个socket的实例(由于socket的阻塞模式,本实例同一时间只能一个客户端连到服务器,只有当当前连接的客户端断开了连接,其他客户端才能连进来)。
关于socket编程,还有更丰富的东西在里面。本例仅供参考。
Python网络编程之Socket的简单实现的更多相关文章
- Python网络编程之socket应用
1 引言 本篇主要对Python下网络编程中用到的socket模块进行初步总结.首先从网络基础理论出发,介绍了TCP协议和UDP协议:然后总结了socket中的常用函数:最后通过实际代码展示基本函数的 ...
- python网络编程之socket
*:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: 0 !important; } /* ...
- Python网络编程之socket编程
什么是Socket? Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面 ...
- python 网络编程之socket开发和socketserver模块
一 客户端/服务器架构 1.硬件C/S架构(打印机) 2.软件C/S架构 互联网中处处是C/S架构 如黄色网站是服务端,你的浏览器是客户端(B/S架构也是C/S架构的一种) 腾讯作为服务端为你提供视频 ...
- Python网络编程之TCP套接字简单用法示例
Python网络编程之TCP套接字简单用法示例 本文实例讲述了Python网络编程之TCP套接字简单用法.分享给大家供大家参考,具体如下: 上学期学的计算机网络,因为之前还未学习python,而jav ...
- 网络编程之socket
网络编程之socket socket:在网络编程中的一个基本组件,也称套接字. 一个套接字就是socket模块中的socket类的一个实例. 套接字包括两个: 服务器套接字和客户机套接字 套接字的实例 ...
- GO语言的进阶之路-网络编程之socket
GO语言的进阶之路-网络编程之socket 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是socket; 在说socket之前,我们要对两个概念要有所了解,就是IP和端口 ...
- [深入浅出Cocoa]iOS网络编程之Socket
http://blog.csdn.net/kesalin/article/details/8798039 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] [深入浅出Co ...
- 网络编程之Socket代码实例
网络编程之Socket代码实例 一.基本Socket例子 Server端: # Echo server program import socket HOST = '' # Symbolic name ...
随机推荐
- Codeforces831B Keyboard Layouts
B. Keyboard Layouts time limit per test 1 second memory limit per test 256 megabytes input standard ...
- 03 of learning python
01 input输入的是str类型 如果输入的是数字的话,要记得强制转换一下! 02 isdigit() 这个方法是用来检测字符串是否全部由数字组成 str.isdigit() 如果字符串只包含数字则 ...
- jupyter-notebook快捷键
Jupyter Notebook 的快捷键 Jupyter Notebook 有两种键盘输入模式.编辑模式,允许你往单元中键入代码或文本:这时的单元框线是绿色的.命令模式,键盘输入运行程序命令:这时的 ...
- html5之上的图片处理
在开发 H5 应用的时候碰到一个问题,应用只需要一张小的缩略图,而用户用手机上传的确是一张大图,手机摄像机拍的图片好几 M,这可要浪费很多流量. 像我这么为用户着想的程序员,绝对不会让这种事情发生的, ...
- 背水一战 Windows 10 (110) - 通知(Tile): secondary tile 模板之基础, secondary tile 模板之文本
[源码下载] 背水一战 Windows 10 (110) - 通知(Tile): secondary tile 模板之基础, secondary tile 模板之文本 作者:webabcd 介绍背水一 ...
- 【java】java反射初探 ——“当类也学会照镜子”
反射的作用 开门见山地说说反射的作用 1.为我们提供了全面的分析类信息的能力 2.动态加载类 我理解的“反射”的意义 (仅个人理解哈) 我理解的java反射机制就是: 提供一套完善而强 ...
- C#通过COM组件操作IE浏览器(二):使用IHTMLDocument3完成登录
第一章介绍了如何打开网站,这一章介绍一下使用IHTMLDocument3完成登录博客园,以下为代码: SHDocVw.InternetExplorer oBrowser = new SHDocVw.I ...
- Android WebView 加载超长 JS 数据
在之前的文章里面,我总结过WebView如何与网页交互,也就是Java如何和JS交互 —— Android WebView 总结 —— Java和JavaScript交互. 基于这篇文章,我们基本上能 ...
- 微信小程序高级基础
微信小程序高级基础 微信小程序的注册和服务器配置: 小程序是什么呢?小程序是一种不需要下载安装就可以使用的应用,它实现了应用"触手可及"的梦想,用户扫一扫或者搜一下就可以打开应用, ...
- 第41节:Java当中的类集框架
Java当中的类集框架 类集框架,那么什么是类集框架,集合的种类有哪些,类集框架的基础结构. 类集框架是一组类和接口的集合,位于java.util包当中,是用来用户存储和管理对象的,在这个类集合框架中 ...