1 服务端窗口布局
import wx
from socket import *
import threading
import time
class Server(wx.Frame):
def __init__(self):
wx.Frame.__init__(self, None, id=101, title="某某的服务器", pos=wx.DefaultPosition, size=(400, 300))
pl = wx.Panel(self)
box = wx.BoxSizer(wx.VERTICAL)
pl.SetSizer(box)
gl = wx.FlexGridSizer(wx.HORIZONTAL)
start_server = wx.Button(pl, size=(180, 40), label="启动服务")
close_server = wx.Button(pl, size=(180, 40), label="关闭服务")
gl.Add(start_server, 1, wx.TOP)
gl.Add(close_server, 1, wx.TOP)
box.Add(gl, 1, wx.ALIGN_CENTER)
pl.SetSizer(box)
self.Interface = wx.TextCtrl(pl, size=(390, 240), style=wx.TE_MULTILINE | wx.TE_READONLY)
box.Add(self.Interface, 2, wx.ALIGN_CENTER)
pl.SetSizer(box)
if __name__ == '__main__':
app = wx.App()
Server().Show()
app.MainLoop()
2 客户端窗口布局
import wx
from socket import *
import threading
import time
class ChatRoom(wx.Frame):
def __init__(self, k_name):
wx.Frame.__init__(self, None, id=100, title="%s的界面" % k_name, pos=wx.DefaultPosition, size=(400, 500))
pl = wx.Panel(self)
box = wx.BoxSizer(wx.VERTICAL)
pl.SetSizer(box)
gl = wx.FlexGridSizer(wx.HORIZONTAL)
connect_server = wx.Button(pl, size=(180, 40), label="连接服务器")
break_server = wx.Button(pl, size=(180, 40), label="断开服务器")
gl.Add(connect_server, 1, wx.TOP | wx.LEFT)
gl.Add(break_server, 1, wx.TOP | wx.RIGHT)
box.Add(gl, 1, wx.ALIGN_CENTER)
self.Interface = wx.TextCtrl(pl, size=(390, 240), style=wx.TE_MULTILINE | wx.TE_READONLY)
box.Add(self.Interface, 2, wx.ALIGN_CENTER)
self.input_data = wx.TextCtrl(pl, size=(390, 100), style=wx.TE_MULTILINE)
box.Add(self.input_data, 2, wx.ALIGN_CENTER)
gl2 = wx.FlexGridSizer(wx.HORIZONTAL)
clear = wx.Button(pl, size=(180, 40), label="清空")
send = wx.Button(pl, size=(180, 40), label="发送")
gl2.Add(clear, 1, wx.TOP | wx.LEFT)
gl2.Add(send, 1, wx.TOP | wx.RIGHT)
box.Add(gl2, 1, wx.ALIGN_CENTER)
pl.SetSizer(box)
if __name__ == '__main__':
app = wx.App()
name = input("请输入客户端的名称:")
ChatRoom(name).Show()
app.MainLoop()
3 定义服务器属性
self.isON = False
self.host_port = ("", 8899)
self.server_socket = socket(AF_INET, SOCK_STREAM)
self.server_socket.bind(self.host_port)
self.server_socket.listen(5)
self.session_thread_map = {}
self.Bind(wx.EVT_BUTTON, self.start_server, start_up)
self.Bind(wx.EVT_BUTTON, self.close_server, close_up)
4 定义客户端属性
self.Bind(wx.EVT_BUTTON,self.connect_to_server,connect_server)
self.Bind(wx.EVT_BUTTON,self.break_to_server,break_server)
self.Bind(wx.EVT_BUTTON,self.send_to_data, send)
self.Bind(wx.EVT_BUTTON, self.clear_to_data, clear)
self.name = k_name
self.isConnect = False
self.client_socket = None