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正则匹配抓取豆瓣电影链接和评论代码分享
Dec 27 Python
Python将图片批量从png格式转换至WebP格式
Aug 22 Python
详解Python的循环结构知识点
May 20 Python
python中break、continue 、exit() 、pass终止循环的区别详解
Jul 08 Python
python 自定义装饰器实例详解
Jul 20 Python
python运用pygame库实现双人弹球小游戏
Nov 25 Python
pytorch点乘与叉乘示例讲解
Dec 27 Python
python 项目目录结构设置
Feb 14 Python
Keras模型转成tensorflow的.pb操作
Jul 06 Python
OpenCV利用python来实现图像的直方图均衡化
Oct 21 Python
Python Selenium破解滑块验证码最新版(GEETEST95%以上通过率)
Jan 29 Python
使用python实现学生信息管理系统
Feb 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 mb_convert_encoding 获取字符串编码类型实现代码
2009/04/26 PHP
从零开始学YII2框架(二)通过 Composer 安装扩展插件
2014/08/20 PHP
33道php常见面试题及答案
2015/07/06 PHP
PHP中类型转换 ,常量,系统常量,魔术常量的详解
2017/10/26 PHP
jquery异步循环获取功能实现代码
2010/09/19 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
网页禁用右键菜单和鼠标拖动选择方法小结
2015/02/25 Javascript
Javascript基础学习笔记(菜鸟必看篇)
2016/07/22 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
利用JavaScript如何查询某个值是否数组内
2017/07/30 Javascript
vue监听scroll的坑的解决方法
2017/09/07 Javascript
Vue.js用法详解
2017/11/13 Javascript
JavaScript通过mouseover()实现图片变大效果的示例
2017/12/20 Javascript
javascript实现点亮灯泡特效示例
2019/10/15 Javascript
Threejs实现滴滴官网首页地球动画功能
2020/07/13 Javascript
基于jQuery拖拽事件的封装
2020/11/29 jQuery
对pandas通过索引提取dataframe的行方法详解
2019/02/01 Python
Python Django Vue 项目创建过程详解
2019/07/29 Python
Python学习笔记之Zip和Enumerate用法实例分析
2019/08/14 Python
PHP统计代码行数的小代码
2019/09/19 Python
Python实现井字棋小游戏
2020/03/09 Python
python连接mysql数据库并读取数据的实现
2020/09/25 Python
H5 video poster属性设置视频封面的方法
2020/05/25 HTML / CSS
达拉斯牛仔官方商店:Dallas Cowboys Pro Shop
2018/02/10 全球购物
给水排水工程专业毕业生推荐信
2013/10/28 职场文书
岗位竞聘演讲稿
2014/01/10 职场文书
大三毕业自我鉴定
2014/01/15 职场文书
差生评语大全
2014/05/04 职场文书
合作协议书格式
2014/08/19 职场文书
实习协议书范本
2014/09/25 职场文书
债务追讨授权委托书范本
2014/10/16 职场文书
2015年个人现实表现材料
2014/12/10 职场文书
史上最全书信经典范文大全(建议收藏)
2019/07/10 职场文书
励志语录:你若不勇敢,谁替你坚强
2019/11/08 职场文书
PHP命令行与定时任务
2021/04/01 PHP
分享几个实用的CSS代码块
2022/06/10 HTML / CSS