资源简介

python 实现的UDP通信,利用生产者消费者模式,通过线性安全队列实现多线程同步。如果要实现在不同电脑上通信,需要关闭防火墙。默认的是hostlocal(可以读程序)。基于python2.7。未打包exe。

资源截图

代码片段和文件信息

# -*- coding: utf-8 -*-



from Tkinter import *
import ttk
import Pmw
import time        
import re

import struct
import socket
import ctypes as ct

import Queue
import thread    
class Server(object):
    def __init__(selfparent):
        
        self.parent = parent
        
        panedwindow = PanedWindow(self.parentbg = ‘green‘orient = VERTICAL)
        frame = frame(self.parent)
        panedwindow.pack(fill = BOTHexpand = 1)
        
        Label(frametext = ‘聊天记录‘).pack(fill = Yexpand = 0)
        
        self.record =Text(framebg = ‘#F0FFFF‘font = (‘KaiTi‘15)height = 10width= 10)
        self.record.bind(‘‘lambda e:‘break‘)
        self.scroll = Scrollbar(framecommand = self.record.yview)
        self.record.config(yscrollcommand = self.scroll.set)
        self.record.pack(side = LEFTfill = BOTHexpand = 1)
        self.scroll.pack(side = RIGHTfill = Yexpand = 0)
        
        panedwindow.add(frame)
        
        
        frame = frame(self.parent)
        frame.pack(fill = BOTHexpand = 1)
        
        Label(frametext = ‘输入内容‘).pack(fill = Yexpand = 0)
        
        self.sendtext =Text(framebg = ‘#FAFFF0‘font = (‘KaiTi‘15)height = 10width= 10)
        scroll = Scrollbar(framecommand = self.sendtext.yview)
        self.sendtext.config(yscrollcommand = scroll.set)
        self.sendtext.pack(side = LEFTfill = BOTHexpand = 1)
        scroll.pack(side = RIGHTfill = Yexpand = 0)
        
        panedwindow.add(frame)
        
        
        frameBottom = frame(self.parent)
        frameBottom.pack(side = BOTTOMfill=  Xexpand = 0)
        frame = frame(frameBottom)
        Label(frametext = ‘选择IP:‘).pack(side = LEFT)
        self.entry = Entry(frame)
        self.entry.pack(side = LEFT)
        frame.pack(side = LEFT)
        ttk.Button(frameBottomtext = ‘发送‘command = self.sendMessage).pack(side = RIGHT)
        
        
        self.time = ShowtimeLabel()
        self.server = socket.socket(socket.AF_INETsocket.SOCK_DGRAM)
        self.server.bind((‘localhost‘8000))
        self.queue = Queue.Queue(10)
        
        self.state = 0
        self.search()
        ‘‘‘开一个线程用来接收网口数据接收到的数据送到队列中‘‘‘
      

评论

共有 条评论