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 Web框架Flask下网站开发入门实例
Feb 08 Python
python计算文本文件行数的方法
Jul 06 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
用matplotlib画等高线图详解
Dec 14 Python
Pandas 对Dataframe结构排序的实现方法
Apr 10 Python
python计算两个地址之间的距离方法
Jun 09 Python
如何用Python做一个微信机器人自动拉群
Jul 03 Python
pandas的连接函数concat()函数的具体使用方法
Jul 09 Python
python实现的接收邮件功能示例【基于网易POP3服务器】
Sep 11 Python
Django实现WebSSH操作物理机或虚拟机的方法
Nov 06 Python
自学python用什么系统好
Jun 23 Python
一个非常简单好用的Python图形界面库(PysimpleGUI)
Dec 28 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
TP5(thinkPHP5)框架基于ajax与后台数据交互操作简单示例
2018/09/03 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
基于jQuery实现多标签页切换的效果(web前端开发)
2016/07/24 Javascript
JS高级运动实例分析
2016/12/20 Javascript
JavaScript & jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
详谈angularjs中路由页面强制更新的问题
2017/04/24 Javascript
ES6中的Promise代码详解
2017/10/09 Javascript
JavaScript中错误正确处理方式小结你用对了吗
2017/10/10 Javascript
Vue.js中使用Vuex实现组件数据共享案例
2020/07/31 Javascript
[36:22]VP vs Serenity 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python抓取网页中图片并保存到本地
2015/12/01 Python
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
python logging模块书写日志以及日志分割详解
2019/07/22 Python
python装饰器使用实例详解
2019/12/14 Python
Python读取二进制文件代码方法解析
2020/06/22 Python
paramiko使用tail实时获取服务器的日志输出详解
2020/12/06 Python
CSS3实现图片抽屉式效果的示例代码
2019/11/06 HTML / CSS
浅谈基于HTML5的在线视频播放方案
2016/02/18 HTML / CSS
canvas 实现 github404动态效果的示例代码
2017/11/15 HTML / CSS
白宫黑市官网:White House Black Market
2016/11/17 全球购物
学生自我鉴定范文
2013/10/04 职场文书
大一自我鉴定范文
2013/10/04 职场文书
银行求职信怎么写
2014/05/26 职场文书
十佳中学生事迹材料
2014/06/02 职场文书
2014年后勤工作总结范文
2014/12/16 职场文书
酒店工程部岗位职责
2015/02/12 职场文书
城管个人总结
2015/02/28 职场文书
2015年城管个人工作总结
2015/05/15 职场文书
陪护人员误工证明
2015/06/24 职场文书
鲁滨逊漂流记读书笔记
2015/06/26 职场文书
朝花夕拾读书笔记
2015/06/29 职场文书
二胎满月酒致辞
2015/07/29 职场文书