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实现巡检系统(solaris)示例
Apr 02 Python
Django框架中方法的访问和查找
Jul 15 Python
Python实现八大排序算法
Aug 13 Python
用python记录运行pid,并在需要时kill掉它们的实例
Jan 16 Python
python实现朴素贝叶斯算法
Nov 19 Python
python assert的用处示例详解
Apr 01 Python
python实现kmp算法的实例代码
Apr 03 Python
Python collections中的双向队列deque简单介绍详解
Nov 04 Python
如何定义TensorFlow输入节点
Jan 23 Python
Python代码中如何读取键盘录入的值
May 27 Python
音频处理 windows10下python三方库librosa安装教程
Jun 20 Python
python非标准时间的转换
Jul 25 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注释和去除空格函数分享
2014/03/13 PHP
详谈PHP文件目录基础操作
2014/11/11 PHP
在laravel中实现将查询的对象转换为多维数组的函数
2019/10/21 PHP
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
textarea不能通过maxlength属性来限制字数的解决方法
2014/09/01 Javascript
Javascript中3个需要注意的运算符
2015/04/02 Javascript
JavaScript编写简单的计算器
2015/11/25 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
BootStrap实现带关闭按钮功能
2017/02/15 Javascript
vue的基本用法与常见指令
2017/08/15 Javascript
11行JS代码制作二维码生成功能
2018/03/09 Javascript
详解vue填坑之解决部分浏览器不支持pushState方法
2018/07/12 Javascript
浅谈Vue初学之props的驼峰命名
2018/07/19 Javascript
angularjs实现对表单输入改变的监控(ng-change和watch两种方式)
2018/08/29 Javascript
微信小程序自定义组件的实现方法及自定义组件与页面间的数据传递问题
2018/10/09 Javascript
Vue表单控件绑定图文详解
2019/02/11 Javascript
[01:07:11]Secret vs Newbee 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python+OpenCV人脸检测原理及示例详解
2020/10/19 Python
Python内置模块hashlib、hmac与uuid用法分析
2018/02/12 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
Python函数参数分类原理详解
2020/05/28 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
解决pytorch 的state_dict()拷贝问题
2021/03/03 Python
CSS3实现DIV圆角效果完整代码
2012/10/10 HTML / CSS
联想中国官方商城:Lenovo China
2017/10/18 全球购物
俄罗斯第一家篮球店:StreetBall
2020/07/30 全球购物
单位刻章介绍信范文
2014/01/11 职场文书
元旦晚会主持词
2014/03/24 职场文书
岗位说明书怎么写
2014/07/30 职场文书
个人股份转让协议书范本
2015/01/28 职场文书
2015年煤矿安全工作总结
2015/05/23 职场文书
2015年英语教研组工作总结
2015/05/23 职场文书
《祁黄羊》教学反思
2016/02/20 职场文书
让人感觉高大上的讲话稿怎么写?
2019/07/08 职场文书
MySQL8.0.24版本Release Note的一些改进点
2021/04/22 MySQL
Mysql 用户权限管理实现
2021/05/25 MySQL