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 相关文章推荐
SublimeText 2编译python出错的解决方法(The system cannot find the file specified)
Nov 27 Python
朴素贝叶斯算法的python实现方法
Nov 18 Python
解决pyqt中ui编译成窗体.py中文乱码的问题
Dec 23 Python
socket + select 完成伪并发操作的实例
Aug 15 Python
使用python Fabric动态修改远程机器hosts的方法
Oct 26 Python
Django框架设置cookies与获取cookies操作详解
May 27 Python
浅析PEP572: 海象运算符
Oct 15 Python
PyTorch中的padding(边缘填充)操作方式
Jan 03 Python
更新升级python和pip版本后不生效的问题解决
Apr 17 Python
Tensorflow全局设置可见GPU编号操作
Jun 30 Python
改变 Python 中线程执行顺序的方法
Sep 24 Python
利用Python判断整数是否是回文数的3种方法总结
Jul 07 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
Smarty模板快速入门
2007/01/04 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
php获取QQ头像并显示的方法
2014/12/23 PHP
PHP children()函数讲解
2019/02/03 PHP
javascript数组去掉重复
2011/05/12 Javascript
JQuery 返回布尔值Is()条件判断方法代码
2012/05/14 Javascript
jquery 字符串切割函数substring的用法说明
2014/02/11 Javascript
js实现图片漂浮效果的方法
2015/03/02 Javascript
jquery表单对象属性过滤选择器实例分析
2015/05/18 Javascript
初识angular框架后的所思所想
2016/02/19 Javascript
使用Jasmine和Karma对AngularJS页面程序进行测试
2016/03/05 Javascript
jquery树形菜单效果的简单实例
2016/06/06 Javascript
jQuery之简单的表单验证实例
2016/07/07 Javascript
js 获取范围内的随机数实例代码
2016/08/02 Javascript
浅谈JavaScript中的apply/call/bind和this的使用
2017/02/26 Javascript
Three.js的使用及绘制基础3D图形详解
2017/04/27 Javascript
Angular 2父子组件数据传递之@Input和@Output详解(下)
2017/07/05 Javascript
原生javascript AJAX 三级联动的实现代码
2018/05/04 Javascript
微信小程序实现页面分享onShareAppMessage
2019/08/12 Javascript
[05:10]2014DOTA2国际邀请赛 通往胜利之匙赛场探秘之旅
2014/07/18 DOTA
深入浅析Python中的yield关键字
2018/01/24 Python
Python 通过打码平台实现验证码的实现
2019/05/13 Python
pycharm配置git(图文教程)
2019/08/16 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
CSS3实现淘宝留白的方法
2020/06/05 HTML / CSS
如何在Canvas上的图形/图像绑定事件监听的实现
2020/09/16 HTML / CSS
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
美国咖啡批发网站:Coffee.org
2017/06/29 全球购物
韩国美国时尚服装和美容在线全球市场:KOODING
2018/11/07 全球购物
英国在线定制百叶窗网站:Swift Direct Blinds
2020/02/25 全球购物
HttpServlet类中的主要方法都有哪些?各自的作用是什么?
2014/03/16 面试题
应届生幼儿园求职信
2013/11/12 职场文书
创业计划书怎样才能打动风投
2014/01/01 职场文书
大学生就业自我推荐信
2014/05/10 职场文书
2016年心理学教育培训学习心得体会
2016/01/12 职场文书
如何才能写好调研报告?
2019/07/03 职场文书