Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能示例


Posted in Python onMarch 22, 2018

本文实例讲述了Python实现基于TCP UDP协议的IPv4 IPv6模式客户端和服务端功能。分享给大家供大家参考,具体如下:

由于目前工作的需要,需要在IPv4和IPv6两种网络模式下TCP和UDP的连接,要做到客户端发包,服务端收包。

前几天写了代码,但是把UDP的客户端和服务端使用TCP模式的代码了。今天在公司使用该工具的时候,发现了问题,忘记了UDP不需要验证。疏忽,疏忽。不过刚刚接触编程,可以原谅。

现在在家,已经把代码改好了。经测试可以使用。

先运行客户端:

python MiniClient.py host port mode(t4, t6, u4, u6)

再运行服务端:

python MiniServer.py host port mode(t4, t6, u4, u6)

客户端代码如下:

import socket, sys
import time
class MiniClient:
  h = ''
  p = ''
  m = ''
  def __init__(self, host, port, mode):
    self.h = host
    self.p = int(port)
    self.m = mode
  def tcpC4(self):
    tcpT4Client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print "Done........"
    tcpT4Client.connect((self.h, self.p))
    print "TCP IPv4 TCP mode connecting..."
    while True:
      time.sleep(1)
      tcpT4Client.send('hello')
      print "hello send to Server"
  def udpC4(self):
    udpT4Client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    print "UDP TCP IPv4 Mode connecting..."
    while True:
      time.sleep(1)
      udpT4Client.sendto("hello", (self.h, self.p))
      print "Hello Send to " , self.h , ' Use ', self.p, 'Port'
  def tcpC6(self):
    tcpT4Client = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
    print "Done........"
    tcpT4Client.connect((self.h, self.p))
    print "TCP IPv6 TCP mode connecting..."
    while True:
      time.sleep(1)
      tcpT4Client.send('hello')
      print "hello send to Server"
  def udpC6(self):
    udpU6Client = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
    print "UDP TCP IPv4 Mode connecting..."
    while True:
      time.sleep(1)
      udpU6Client.sendto("hello", (self.h, self.p))
      print "Hello Send to " , self.h , ' Use ', self.p, 'Port'
if __name__ == "__main__":
  x = MiniClient(sys.argv[1], sys.argv[2], sys.argv[3])
  if x.m == 't4':
    x.tcpC4()
  elif x.m == 't6':
    x.tcpC6()
  elif x.m == 'u4':
    x.udpC4()
  else:
    x.udpC6()

服务端代码:

import socket, sys
class MiniServer:
  h = ''
  p = ''
  m = ''
  def __init__(self, host, port, mode):
    self.h = host
    self.p = int(port)
    self.m = mode
  def serverT4(self):
    tcpT4Server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    print "Server Socket Created......."
    tcpT4Server.bind((self.h, self.p))
    print "Wating for connecting......."
    tcpT4Server.listen(5)
    while True:
      clientSock, clientaddr = tcpT4Server.accept()
      print "Connected from: ", clientSock.getpeername()
      clientSock.send('Congratulations........')
      while True:
        buf = clientSock.recv(1024)
        print buf
      #clientSock.close()
  def udpT4(self):
    udpT4Server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    print "UDP TCP IPv4 Mode Start....."
    udpT4Server.bind((self.h, self.p))
    print "UDP Server Start"
    while True:
      udpT4Data, udpT4ServerInfo = udpT4Server.recvfrom(1024)
      print "Receive from ", udpT4ServerInfo, " and The Data send from The Client is :", udpT4Data
  def serverT6(self):
    tcpT6Server = socket.socket(socket.AF_INET6, socket.SOCK_STREAM)
    print "Server Socket Created......."
    tcpT6Server.bind((self.h, self.p))
    print "Wating for connecting......."
    tcpT6Server.listen(5)
    while True:
      clientSock, clientaddr = tcpT6Server.accept()
      print "Connected from: ", clientSock.getpeername()
      clientSock.send('Congratulations........')
      #clientSock.close()
  def udpT6(self):
    udpT6Server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    print "UDP TCP IPv4 Mode Start....."
    udpT6Server.bind((self.h, self.p))
    print "UDP Server Start"
    while True:
      udpT4Data, udpT6ServerInfo = udpT6Server.recvfrom(1024)
      print "Receive from ", udpT6ServerInfo, " and The Data send from The Client is :", udpT4Data
if __name__ == "__main__":
  x = MiniServer(sys.argv[1], sys.argv[2], sys.argv[3])
  if x.m == 't4':
    x.serverT4()
  elif x.m == 't6':
    x.serverT6()
  elif x.m == 'u4':
    x.udpT4()
  else:
    x.udpT6()

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

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

Python 相关文章推荐
python安装教程 Pycharm安装详细教程
May 02 Python
python实现二叉树的遍历
Dec 11 Python
Python基于列表list实现的CRUD操作功能示例
Jan 05 Python
Python实现学校管理系统
Jan 11 Python
mvc框架打造笔记之wsgi协议的优缺点以及接口实现
Aug 01 Python
Numpy之将矩阵拉成向量的实例
Nov 30 Python
Python面向对象中类(class)的简单理解与用法分析
Feb 21 Python
Python Tornado之跨域请求与Options请求方式
Mar 28 Python
python用TensorFlow做图像识别的实现
Apr 21 Python
解决Python3.8运行tornado项目报NotImplementedError错误
Sep 02 Python
Python实现学生管理系统(面向对象版)
Jun 24 Python
Python多线程 Queue 模块常见用法
Jul 04 Python
Python cookbook(数据结构与算法)将名称映射到序列元素中的方法
Mar 22 #Python
Python cookbook(数据结构与算法)从字典中提取子集的方法示例
Mar 22 #Python
python实现将excel文件转化成CSV格式
Mar 22 #Python
python 对象和json互相转换方法
Mar 22 #Python
利用python将json数据转换为csv格式的方法
Mar 22 #Python
解决python3中解压zip文件是文件名乱码的问题
Mar 22 #Python
Python爬虫工程师面试问题总结
Mar 22 #Python
You might like
一个用php实现的获取URL信息的类
2007/01/02 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
PHP去除字符串最后一个字符的三种方法实例
2017/03/01 PHP
thinkphp5 URL和路由的功能详解与实例
2017/12/26 PHP
JQuery与Ajax常用代码实现对比
2009/10/03 Javascript
jQuery的实现原理的模拟代码 -2 数据部分
2010/08/01 Javascript
基于jquery的让textarea自适应高度的插件
2010/08/03 Javascript
js常用代码段收集
2011/10/28 Javascript
javascript alert乱码的解决方法
2013/11/05 Javascript
简单谈谈JavaScript的同步与异步
2015/12/31 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
浅析Bootstrap组件之面板组件
2016/05/04 Javascript
jquery 全选、全不选、反选效果的实现代码【推荐】
2016/05/05 Javascript
Vue.js结合bootstrap实现分页控件
2017/03/10 Javascript
ES6正则表达式扩展笔记
2017/07/25 Javascript
JS实现移动端判断上拉和下滑功能
2017/08/07 Javascript
Vue中建立全局引用或者全局命令的方法
2017/08/21 Javascript
使用ajax的post同步执行(实现方法)
2017/12/21 Javascript
详解.vue文件中style标签的几个标识符
2018/07/17 Javascript
vue使用rem实现 移动端屏幕适配
2018/09/26 Javascript
基于Vue2-Calendar改进的日历组件(含中文使用说明)
2019/04/14 Javascript
解决angular 使用原生拖拽页面卡顿及表单控件输入延迟问题
2020/04/21 Javascript
python新手经常遇到的17个错误分析
2014/07/30 Python
python使用pandas实现数据分割实例代码
2018/01/25 Python
python实现自动获取IP并发送到邮箱
2018/12/26 Python
python在回调函数中获取返回值的方法
2019/02/22 Python
HTML5计时器小例子
2013/10/15 HTML / CSS
HTML5+JS实现俄罗斯方块原理及具体步骤
2013/11/29 HTML / CSS
美国最大和最受信任的二手轮胎商店:Bestusedtires.com
2020/06/02 全球购物
比较一下entity bean和session bean
2013/12/27 面试题
档案管理员岗位职责
2013/12/01 职场文书
《散步》教学反思
2014/03/02 职场文书
党员入党表决心的话
2014/03/11 职场文书
企业理念标语
2014/06/09 职场文书
2014个人反腐倡廉思想汇报
2014/09/15 职场文书
社会实践活动总结
2015/02/05 职场文书