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安装以及IDE的配置教程
Apr 29 Python
处理Python中的URLError异常的方法
Apr 30 Python
用Python解决计数原理问题的方法
Aug 04 Python
解决Python字典写入文件出行首行有空格的问题
Sep 27 Python
人工智能最火编程语言 Python大战Java!
Nov 13 Python
Python字符串拼接六种方法介绍
Dec 18 Python
python使用筛选法计算小于给定数字的所有素数
Mar 19 Python
Python使用numpy产生正态分布随机数的向量或矩阵操作示例
Aug 22 Python
selenium使用chrome浏览器测试(附chromedriver与chrome的对应关系表)
Nov 29 Python
python 字段拆分详解
Dec 17 Python
Python如何发送与接收大型数组
Aug 07 Python
Sentry错误日志监控使用方法解析
Nov 12 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下保存远程图片到本地的办法
2010/08/08 PHP
8个出色的WordPress SEO插件收集
2011/02/26 PHP
PHP 数据结构 算法描述 冒泡排序 bubble sort
2011/07/10 PHP
PHP+Javascript实现在线拍照功能实例
2015/07/18 PHP
php微信公众号js-sdk开发应用
2016/11/28 PHP
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
js函数调用的方式
2014/05/06 Javascript
jQuery函数map()和each()介绍及异同点分析
2014/11/08 Javascript
javascript实现Table排序的方法
2015/05/15 Javascript
JS简单随机数生成方法
2016/09/05 Javascript
JS Canvas定时器模拟动态加载动画
2016/09/17 Javascript
js实现年月日表单三级联动
2020/04/17 Javascript
vue 监听某个div垂直滚动条下拉到底部的方法
2018/09/15 Javascript
Javascript实现秒表计时游戏
2020/05/27 Javascript
javascript代码实现简易计算器
2021/01/25 Javascript
python实现简单的socket server实例
2015/04/29 Python
Python 通过pip安装Django详细介绍
2017/04/28 Python
说说如何遍历Python列表的方法示例
2019/02/11 Python
Python3爬楼梯算法示例
2019/03/04 Python
Python函数和模块的使用总结
2019/05/20 Python
Python实现的爬取豆瓣电影信息功能案例
2019/09/15 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
python mysql自增字段AUTO_INCREMENT值的修改方式
2020/05/18 Python
欧洲有机婴儿食品最大的市场:Organic Baby Food(供美国和加拿大)
2018/03/28 全球购物
计算机应用与科学个人的自我评价
2013/11/15 职场文书
宿舍违规检讨书
2014/01/12 职场文书
《湘夫人》教学反思
2014/02/21 职场文书
倡导文明标语
2014/06/16 职场文书
小学生纪念九一八事变演讲稿
2014/09/14 职场文书
个人年终总结怎么写
2015/03/09 职场文书
纪录片信仰观后感
2015/06/08 职场文书
敬老院活动感想
2015/08/07 职场文书
高二语文教学反思
2016/02/16 职场文书
告诉你创业计划书的8个实用技巧
2019/07/12 职场文书
Ajax 的初步实现(使用vscode+node.js+express框架)
2021/06/18 Javascript
四十九个javascript小知识实用技巧
2021/11/20 Javascript