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简单生成随机数的方法示例
Mar 31 Python
Python读写zip压缩文件的方法
Aug 29 Python
深入理解python中sort()与sorted()的区别
Aug 29 Python
python实现自动获取IP并发送到邮箱
Dec 26 Python
python中的subprocess.Popen()使用详解
Dec 25 Python
python 实现人和电脑猜拳的示例代码
Mar 02 Python
python实现跨excel sheet复制代码实例
Mar 03 Python
30行Python代码实现高分辨率图像导航的方法
May 22 Python
Python+Selenium实现自动化的环境搭建的步骤(图文)
Sep 01 Python
python 录制系统声音的示例
Dec 21 Python
python 制作本地应用搜索工具
Feb 27 Python
Django实现WebSocket在线聊天室功能(channels库)
Sep 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下利用curl判断远程文件是否存在的实现代码
2011/10/08 PHP
php上传文件中文文件名乱码的解决方法
2013/11/01 PHP
详解PHP的Yii框架中的Controller控制器
2016/03/29 PHP
PHP使用栈解决约瑟夫环问题算法示例
2017/08/27 PHP
THINKPHP3.2使用soap连接webservice的解决方法
2017/12/13 PHP
jquery uaMatch源代码
2011/02/14 Javascript
jquery命令汇总,方便使用jquery的朋友
2012/06/26 Javascript
JS中令人发指的valueOf方法介绍
2013/02/22 Javascript
javascript模拟实现C# String.format函数功能代码
2013/11/25 Javascript
jQuery插件简单实现方法
2015/07/18 Javascript
jQuery的position()方法详解
2015/07/19 Javascript
JS实现横向与竖向两个选项卡Tab联动的方法
2015/09/27 Javascript
JavaScript类型检测之typeof 和 instanceof 的缺陷与优化
2016/01/13 Javascript
jQuery插件zTree实现的多选树效果示例
2017/03/08 Javascript
整理关于Bootstrap模态弹出框的慕课笔记
2017/03/29 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
微信小程序批量监听输入框对按钮样式进行控制的实现代码
2019/10/12 Javascript
javascript中的相等操作符(==与===区别)
2019/12/21 Javascript
Vue组件基础用法详解
2020/02/05 Javascript
Javascript幻灯片播放功能实现过程解析
2020/05/07 Javascript
Vue +WebSocket + WaveSurferJS 实现H5聊天对话交互的实例
2020/11/18 Vue.js
MySQLdb ImportError: libmysqlclient.so.18解决方法
2014/08/21 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
2018/02/11 Python
python实现求两个字符串的最长公共子串方法
2018/07/20 Python
详解Python用户登录接口的方法
2019/04/17 Python
在vscode中配置python环境过程解析
2019/09/28 Python
python矩阵运算,转置,逆运算,共轭矩阵实例
2020/05/11 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
总裁岗位职责
2013/12/04 职场文书
授权委托书范文
2014/07/31 职场文书
2015年社区平安建设工作总结
2015/05/13 职场文书
军训通讯稿范文
2015/07/18 职场文书
小学入学感言
2015/08/01 职场文书
前端JavaScript大管家 package.json
2021/11/02 Javascript