Python socket编程之七:多窗口的应用

f1.py

# -*- coding: utf-8 -*-
import socket
import struct
import sqlalchemy
import pandas
########################################################################
class Socket:
    #----------------------------------------------------------------------
    def __init__(self, Host = '192.168.1.3', Port = 12345):
        self.Host = Host
        self.Port = Port
    #----------------------------------------------------------------------
    def Run_server(self):
        Socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        Socket.bind((self.Host, self.Port))
        Socket.listen(5)
        Engine = sqlalchemy.create_engine('mssql+pyodbc://sa:123456@XiTongDSN')
        '''修改1'''
        Dataframe = pandas.read_sql('sh', Engine)
        I = list(Dataframe['date'].index)
        O = Dataframe['open']
        H = Dataframe['high']
        L = Dataframe['low']
        C = Dataframe['close']
        V = Dataframe['volume']
        i = 0
        while True:            
            Connection, Address = Socket.accept()
            if Connection.recv(1024) == b'Link' and i < len(I):               
                '''修改2'''                
                Connection.send(struct.pack('i5f', I[i], O[i], H[i], L[i], C[i], V[i]))
                i += 1
            else:
                Connection.close()
                Socket.close()
    #----------------------------------------------------------------------
    def Run_client(self, Message = b'Link'):
        Socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        Socket.connect((self.Host, self.Port))
        Socket.send(Message)
        '''修改3'''
        I, O, H, L, C, V = struct.unpack('i5f', Socket.recv(1024)[:24])
        Socket.close()
        return I, O, H, L, C, V

f2.py

# -*- coding: utf-8 -*-
import sys
sys.path.append('C:\WinPython-32bit-3.5.1.3\myWorkSpace1')
import f1
F1 = f1.Socket()
F1.Run_server()

f3.py

# -*- coding: utf-8 -*-
import f1
F1 = f1.Socket()
import matplotlib.pylab as Plot
from matplotlib.finance import candlestick_ohlc as Drawk
'''修改1'''
Figure = Plot.figure('Made by DengChaohai')
f1 = Figure.add_subplot(3, 4, (1, 7), title = 'Index', xlim = [0, 100])
Plot.grid(True)
f2 = Figure.add_subplot(1, 4, 4, title = 'Trading price', ylim = [-6, 6])
Plot.grid(True)
f3 = Figure.add_subplot(3, 4, (9, 11), title = 'Volume', xlim = [0, 100])
Plot.grid(True)
Quotes = []
TRUE = True
while TRUE:
    I, O, H, L, C, V = F1.Run_client()
    Quotes.append((I, O, H, L, C, V))    
    Drawk(f1, Quotes, width = 0.5, colorup = 'g', colordown = 'r')    
    f2.axhline(y = 0)
    f3.bar(I, V, width = 0.5, color = 'c', edgecolor = 'c')
    Plot.pause(0.1)
    if I > 100:
        TRUE = False
F1.Run_client(b'disconnect')

录像8

posted @ 2016-06-02 23:04  佩雷尔曼的信徒  阅读(856)  评论(0编辑  收藏  举报