`
zengleo
  • 浏览: 19588 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

python 写的udp服务器和客户端变身的程序。

阅读更多
目标:实现发送端和接收端互相变身
分为  接收端
      发送端

设定可以互相变身的两台机器的 IP.

发送端特征: 0、接到变身指令
             1、检测本地MSSQL库
                1)、如果可以访问就广播(本机IP)包给接收端
                2)、如果不能访问就广播(另外一台机器的IP),然后变成接收端


接收端特征:0、接到变身指令
            1、接受数据
               1)、对比IP是否是自身IP,如果是,变身为发送端
#coding:gb2312
#主备切换器


import socket
import os
import pymssql
import ctypes
import time
import sys


#--------------------------------------------------------------------------#
# 定义发送广播包函数
#--------------------------------------------------------------------------#

def sendserver():

    in_data=raw_input('2为发送端')
    if in_data=='2':
        s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
        s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
        s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
        if loaclhost_ip=='127.0.0.1':
            windows_msg('''1、 'setting.ini'中的'GLOBAL'的字段不能设置为127.0.0.1
2、网络未连接"
3、本地IP不能设置为127.0.0.1''','警告')
            sys.exit()
        else:
            while 1:
                try:
                    con=pymssql.connect(user='sa',password='sa',\
                    host='localhost',database='s1config')
                    con.close()
                    print '连接数据库成功,发送数据IP1!',loaclhost_ip,time.ctime()
                    logfile('%s  连接数据库成功,发送数据IP1!%s \n'%(time.ctime(),loaclhost_ip))
                    s.sendto(loaclhost_ip,('255.255.255.255',3999))
                    time.sleep(20)


                except:
                    dll_data.setDBFlag(0)
                    for i in ipdata:
                        if i!=loaclhost_ip:
                            print '数据库连接不成功,发送数据IP',i,time.ctime()
                            logfile('%s 数据库连接不成功,发送数据IP是:%s  \n'%(time.ctime(),i))
                            try:
                                s.sendto(i,('255.255.255.255',3999))
                            except:
                                logfile('%s send不成功, \n'%(time.ctime()))
                            try:
                                print " 偶也,我要变身了,我成为接受方了",time.ctime()
                                logfile('%s  我要变身了,我成为接受方了  \n'%(time.ctime()))
                                acceptserver()

                            except:
                                logfile('%s 变身不成功, \n'%(time.ctime()))


    else:
        acceptserver()

#--------------------------------------------------------------------------#
# 定义接受包函数
#--------------------------------------------------------------------------#

def acceptserver():

    in_data=raw_input('1为接收端')
    if in_data=='1':
        logfile('%s  DB为1,瓦咔咔,我要变成为发送方啦\n'%(time.ctime()))
        sendserver()
    else:
        s=socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
        s.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
        s.setsockopt(socket.SOL_SOCKET,socket.SO_BROADCAST,1)
        s.bind((loaclhost_ip,3999))
        while 1:
            print "等待数据中。。。。"
            d,a=s.recvfrom(1024)
            if a[0]=='127.0.0.1':   #判断ip,不让他设置为127.0.0.1
                windows_msg(" 'setting.ini'中的'GLOBAL'的字段不能设置为127.0.0.1",'警告')
                sys.exit()
            else:
                print '等来的数据',d,'来自',a,time.ctime()
                logfile('%s  等来的数据,%s,来自,%s\n'%(time.ctime(),d,a))

                if d==loaclhost_ip:
                    
                    print d,'是我的IP',"瓦咔咔,我要变成为发送方啦",time.ctime()
                    logfile('%s %s是我的IP,瓦咔咔,我要变成为发送方啦\n'%(time.ctime(),d))
                    sendserver()



acceptserver()




分享到:
评论

相关推荐

    python实现udp服务器和客户端简单例子

    Python 提供了 socket 模块来实现网络通信,包括 UDP 的服务器和客户端编程。下面我们将深入探讨如何使用 Python 实现 UDP 服务器和客户端。 首先,我们来看 UDP 服务器的实现。在 Python 中,创建一个 UDP 服务器...

    基于python的UDP服务端客户端代码

    总结来说,这个项目涵盖了Python的UDP服务器和客户端编程,以及串口通信的基本用法,为学习者提供了一个很好的实践平台。通过理解并运行这些代码,你可以深入理解UDP协议的工作原理,以及如何在Python中实现网络和...

    一个基于Python写的OPC UA客户端例子

    标题中的“一个基于Python写的OPC UA客户端例子”揭示了我们即将探讨的是如何使用Python编程语言来实现OPC UA( OPC统一架构)客户端的应用。OPC UA是一种工业通信标准,它提供了一种安全、可靠的方式来交换工业自动...

    udp.zip_UDP_udp client_udp服务器与客户端

    在这个“udp.zip”压缩包中,我们看到涉及了UDP客户端和服务器的实现,这将帮助我们理解如何在实际应用中使用UDP协议。 首先,UDP客户端是发起通信的一方,它会发送数据包到预设的IP地址和端口号。在UDP客户端的...

    python操作同花顺客户端下单程序

    通过python操作同花顺客户端下单程序。在win7,python2.7,pywinauto0.6.5,同花顺网上股票交易系统5.0环境下测试通过。

    一个python的udp测试程序

    udp协议的python程序,可以方便的测试udp打洞的工程

    Python编程题服务器与客户端交互的的程序

    本题目的重点是利用Python的`socket`库来创建一个简单的TCP服务器和客户端,以便进行双向通信。 首先,我们要了解`socket`库在Python中的作用。`socket`库提供了一种低级别的接口,用于创建套接字对象,这些对象...

    python 写的服务器

    它允许服务器和客户端在建立连接后实时交换数据,常用于在线游戏、实时聊天室或股票报价等应用。 对于文件服务器,Python可以利用ftplib库实现FTP服务器,或者使用PyFileServer这样的第三方库,提供基于HTTP的文件...

    UDP客户端服务器

    在本文中,我们将深入探讨UDP客户端和服务器的工作原理,以及如何编写简单的UDP客户端服务器程序。 首先,理解UDP的基本特性至关重要。与TCP(Transmission Control Protocol)不同,UDP不建立连接也不保证数据包的...

    echo服务器和客户端程序

    在标签“基本的客户和服务器程序”中,我们可以推断这个任务可能是教学或练习的一部分,目的是让学习者理解网络通信的基础流程。在这个任务1(task1)中,可能包含了编写和运行这两个程序的步骤,以及可能遇到的问题...

    python3实现UDP协议的服务器和客户端

    利用Python中的socket模块中的来实现UDP协议,这里写一个简单的服务器和客户端。为了说明网络编程中UDP的应用,这里就不写图形化了,在两台电脑上分别打开UDP的客户端和服务端就可以了。 UDP:用户数据报协议,是一个...

    Python UDP\IP通信服务器与客户端

    在提供的文件tsUserv3.py和tsUclnt3.py中,分别代表了服务器(Server)和客户端(Client)的实现。以下是对这两个文件中可能包含的知识点的详细说明: 1. **创建Socket对象**: - 在Python中,使用`socket.socket...

    Python-aiohttp一个用于asyncio和Python的异步HTTP客户端服务器

    aiohttp支持WebSocket协议,允许服务器和客户端之间进行双向通信。这对于实时应用,如聊天室、游戏服务器或者股票行情推送等场景非常有用。通过`websockets`模块,可以方便地处理WebSocket请求和发送消息。 ### ...

    网络UDP服务器课程设计

    在本课程设计中,我们将深入探讨“网络UDP服务器”的实现,这是一个基于用户数据报协议(UDP)的服务端程序。UDP是一种无连接的传输层协议,它不像TCP那样提供可靠的顺序交付和错误校验,而是以较低的延迟和较高的...

    python pygame实现的简单的网游服务器端和客户端

    在这个项目中,"python pygame实现的简单的网游服务器端和客户端",我们看到了一个基于Pygame构建的简单网络对战游戏的实现。 首先,让我们深入了解Pygame的基础。Pygame是Python的一个模块集合,它提供了丰富的...

    西工大综合创作训练3大作业-基于TCP/UDP的服务器/客户端程序

    在这个项目中,学生需要构建一个服务器程序,该服务器能够同时处理来自多个客户端的连接请求,这是多线程或多进程编程的一个典型应用场景。服务器需要监听特定端口,一旦有客户端连接,就创建一个新的线程或进程来...

    服务器端和客户端程序

    在IT领域,服务器端和客户端程序是构建网络应用的基础组件,它们共同构成了互联网服务的核心架构。这个主题将深入探讨这两个概念以及它们之间的交互过程。 首先,我们要了解什么是服务器端。服务器端,通常指的是...

    Python 通过 socket 实现服务端和客户端相互间网络通信的例子

    它允许程序创建和使用网络连接,使得服务器端和客户端能够交换数据。本例中,我们探讨的是如何使用Python的socket库创建一个简单的服务端(server.py)和客户端(client.py)来实现双向通信。 1. **Python socket...

    linux下基于UDP的广播服务器和客户端

    在Linux环境下,构建基于UDP(用户数据报协议)的广播服务器和客户端是一项常见的网络编程任务。UDP是一种无连接的传输层协议,它不保证数据的可靠传输,但因其高效、简单而广泛应用于需要实时性或者容错能力较高的...

Global site tag (gtag.js) - Google Analytics