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通过邮件服务器端口发送邮件的方法
Apr 30 Python
Python实现TCP/IP协议下的端口转发及重定向示例
Jun 14 Python
python开发简易版在线音乐播放器
Mar 03 Python
python numpy函数中的linspace创建等差数列详解
Oct 13 Python
基于Django的python验证码(实例讲解)
Oct 23 Python
Python入门之后再看点什么好?
Mar 05 Python
pandas 数据归一化以及行删除例程的方法
Nov 10 Python
python for循环remove同一个list过程解析
Aug 14 Python
浅析PEP570新语法: 只接受位置参数
Oct 15 Python
python内打印变量之%和f的实例
Feb 19 Python
python3格式化字符串 f-string的高级用法(推荐)
Mar 04 Python
python如何写个俄罗斯方块
Nov 06 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/05/26 PHP
php读取der格式证书乱码解决方法
2015/06/22 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
jQuery的一些注意
2006/12/06 Javascript
Save a File Using a File Save Dialog Box
2007/06/18 Javascript
Jquery 常用方法经典总结
2010/01/28 Javascript
高效的表格行背景隔行变色及选定高亮的JS代码
2010/12/04 Javascript
MooTools 页面滚动浮动层智能定位实现代码
2011/08/23 Javascript
jQuery中element选择器用法实例
2014/12/29 Javascript
JS实现点击颜色块切换指定区域背景颜色的方法
2015/02/25 Javascript
JQ技术实现注册页面带有校验密码强度
2015/07/27 Javascript
JavaScript通过使用onerror设置默认图像显示代替alt
2016/03/01 Javascript
jQuery中$.grep() 过滤函数 数组过滤
2016/11/22 Javascript
使用JavaScript开发跨平台的桌面应用详解
2017/07/27 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
使用layui 渲染table数据表格的实例代码
2018/08/19 Javascript
使用vue2.0创建的项目的步骤方法
2018/09/25 Javascript
vue.js中ref和$refs的使用及示例讲解
2019/08/14 Javascript
微信小程序定义和调用全局变量globalData的实现
2019/11/01 Javascript
JavaScript缺少insertAfter解决方案
2020/07/03 Javascript
从零学Python之入门(三)序列
2014/05/25 Python
python寻找list中最大值、最小值并返回其所在位置的方法
2018/06/27 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
python创建与遍历List二维列表的方法
2019/08/16 Python
python实现在线翻译
2020/06/18 Python
python 如何实现遗传算法
2020/09/22 Python
python 实现一个简单的线性回归案例
2020/12/17 Python
CSS3 display知识详解
2015/11/25 HTML / CSS
英国豪华真皮和布艺沙发销售网站:Darlings of Chelsea
2018/01/05 全球购物
adidas菲律宾官网:adidas PH
2020/02/07 全球购物
英国运动风奢侈品购物网站:Maison De Fashion
2020/08/28 全球购物
文明餐桌行动实施方案
2014/02/19 职场文书
2014迎新年晚会策划方案
2014/02/23 职场文书
个人收入证明范本
2014/09/18 职场文书
Pygame Event事件模块的详细示例
2021/11/17 Python
mysql查询结果实现多列拼接查询
2022/04/03 MySQL