Python网络编程之TCP与UDP协议套接字用法示例


Posted in Python onFebruary 02, 2018

本文实例讲述了Python网络编程之TCP与UDP协议套接字用法。分享给大家供大家参考,具体如下:

TCP协议

服务器端:

#!/usr/bin/env python
from socket import *
from time import ctime
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpSerSock = socket(AF_INET, SOCK_STREAM) ##创建服务器TCP套接字
tcpSerSock.bind(ADDR)
tcpSerSock.listen(5)
while True:
  print 'waiting for connection...'
  tcpCliSock, addr = tcpSerSock.accept() ##等待客户端连接
  print '...connected from:', addr
  while True:
    data = tcpCliSock.recv(BUFSIZ) ##监听客户端是否发送消息
    if not data:
      break
    tcpCliSock.send('[%s] %s' % (
      ctime(), data))
  tcpCliSock.close()
tcpSerSock.close()

客户端:

#!/usr/bin/env python
from socket import *
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
tcpCliSock = socket(AF_INET, SOCK_STREAM)  ##创建客户端TCP套接字
tcpCliSock.connect(ADDR) ##连接服务器
while True:
  data = raw_input('> ')
  if not data:
    break
  tcpCliSock.send(data)
  data = tcpCliSock.recv(BUFSIZ) ##监听客户端发送消息
  if not data:
    break
  print data
tcpCliSock.close()

UDP协议

服务器端:

#!/usr/bin/env python
from socket import *
from time import ctime
HOST = ''
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
udpSerSock = socket(AF_INET, SOCK_DGRAM)
udpSerSock.bind(ADDR)
while True:
  print 'waiting for message...'
  data, addr = udpSerSock.recvfrom(BUFSIZ)##监听并接受客户端发的消息
  udpSerSock.sendto('[%s] %s' % (  ##给消息加上时间戳并返回给客户端
    ctime(), data), addr)
  print '...received from and returned to:', addr
udpSerSock.close()

客户端:

#!/usr/bin/env python
from socket import *
HOST = 'localhost'
PORT = 21567
BUFSIZ = 1024
ADDR = (HOST, PORT)
udpCliSock = socket(AF_INET, SOCK_DGRAM)
while True:
  data = raw_input('> ')
  if not data:
    break
  udpCliSock.sendto(data, ADDR) ##给服务器发送数据
  data, ADDR = udpCliSock.recvfrom(BUFSIZ) ##客户端接受带时间戳的数据
  if not data:
    break
  print data
udpCliSock.close()

更多关于Python相关内容可查看本站专题:《Python Socket编程技巧总结》、《Python数据结构与算法教程》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python和shell变量互相传递的几种方法
Nov 20 Python
python实现dict版图遍历示例
Feb 19 Python
Python中类的继承代码实例
Oct 28 Python
python base64 decode incorrect padding错误解决方法
Jan 08 Python
python模拟enum枚举类型的方法小结
Apr 30 Python
Python使用itertools模块实现排列组合功能示例
Jul 02 Python
python点击鼠标获取坐标(Graphics)
Aug 10 Python
python随机生成大小写字母数字混合密码(仅20行代码)
Feb 01 Python
pycharm解决关闭flask后依旧可以访问服务的问题
Apr 03 Python
Django之富文本(获取内容,设置内容方式)
May 21 Python
python开发入门——列表生成式
Sep 03 Python
Python实现照片卡通化
Dec 06 Python
Python星号*与**用法分析
Feb 02 #Python
Python模块WSGI使用详解
Feb 02 #Python
Python常见字符串操作函数小结【split()、join()、strip()】
Feb 02 #Python
tensorflow中next_batch的具体使用
Feb 02 #Python
Python输出各行命令详解
Feb 01 #Python
Python输出由1,2,3,4组成的互不相同且无重复的三位数
Feb 01 #Python
Python实现的视频播放器功能完整示例
Feb 01 #Python
You might like
php自动获取字符串编码函数mb_detect_encoding
2011/05/31 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
php如何控制用户对图片的访问 PHP禁止图片盗链
2016/03/25 PHP
php观察者模式应用场景实例详解
2017/02/03 PHP
highchart数据源纵轴json内的值必须是int(详解)
2017/02/20 PHP
javascript 放大镜 v1.0 基于Yui2 实现的放大镜效果
2010/03/08 Javascript
div+css布局的图片连续滚动js实现代码
2010/05/04 Javascript
JQuery中html()方法使用不当带来的陷阱
2011/04/07 Javascript
JS打印gridview实现原理及代码
2013/02/05 Javascript
Jquery模仿Baidu、Google搜索时自动补充搜索结果提示
2013/12/26 Javascript
JS可以控制样式的名称写法一览
2014/01/16 Javascript
js实现照片墙功能实例
2015/02/05 Javascript
jQuery在ul中显示某个li索引号的方法
2015/03/17 Javascript
javascript绘制漂亮的心型线效果完整实例
2016/02/02 Javascript
Jquery插件仿百度搜索关键字自动匹配功能
2016/05/11 Javascript
jQuery下拉菜单的实现代码
2016/11/03 Javascript
AngularJS中指令的四种基本形式实例分析
2016/11/22 Javascript
jquery删除数组中重复元素
2016/12/05 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
jquery实现tab键进行选择后enter键触发click行为
2017/03/29 jQuery
JavaScript之promise_动力节点Java学院整理
2017/07/03 Javascript
JavaScript闭包原理与用法实例分析
2018/08/10 Javascript
js获取form表单中name属性的值
2019/02/27 Javascript
jQuery 查找元素操作实例小结
2019/10/02 jQuery
Vue3.0数据响应式原理详解
2019/10/09 Javascript
[49:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第二场 3月4日
2021/03/11 DOTA
解决Python中字符串和数字拼接报错的方法
2016/10/23 Python
Python使用selenium实现网页用户名 密码 验证码自动登录功能
2018/05/16 Python
Python loguru日志库之高效输出控制台日志和日志记录
2020/03/07 Python
Selenium结合BeautifulSoup4编写简单的python爬虫
2020/11/06 Python
加拿大品牌鞋包连锁店:Little Burgundy
2021/02/28 全球购物
学习党的群众路线剖析材料
2014/10/09 职场文书
党委班子纠正“四风”问题整改措施
2014/10/28 职场文书
运动会200米广播稿
2015/08/19 职场文书
python3.9之你应该知道的新特性详解
2021/04/29 Python
Windows Server 2012配置DNS服务器的方法
2022/04/29 Servers