我比较菜,一般只能依靠报错,所以看不出来这个代码的问题,求大佬指教
from socket import *
import time
import wx
import threading
import struct
class S(wx.Frame):
def init(self,parent):
wx.Frame.__init__(self,parent,wx.ID_ANY,title = '服务端', size = (700,500))
#创建画板
self.panel1 = wx.Panel(self,wx.ID_ANY)
self.panel1.SetBackgroundColour("White")
#创建按钮
self.button1 = wx.Button(self.panel1,wx.ID_ANY,'发送', pos = (540,400),size = (50,25))
self.Bind(wx.EVT_BUTTON,self.OnClick1,self.button1)
#创建静态文本
self.static1 = wx.StaticText(self.panel1,wx.ID_ANY,'输入消息',pos = (10,380))
self.static1.SetBackgroundColour('White')
#创建记录区域
self.log1 = wx.TextCtrl(self.panel1, wx.ID_ANY,"",size = (620,310),pos = (10,60), style = wx.TE_MULTILINE|wx.TE_READONLY)
#创建输入区域
self.inputmsg1 = wx.TextCtrl(self.panel1, wx.ID_ANY,size = (520,25),style = wx.TE_PROCESS_ENTER,pos = (10,400))
self.Bind(wx.EVT_TEXT_ENTER, self.OnClick1, self.inputmsg1)
#连接
self.addr1 = (gethostname(), 2000)
self.ss = socket(AF_INET,SOCK_STREAM)
self.ss.bind(self.addr1)
self.ss.listen(2)
self.data1 = (u"等待客户连接……\n")
self.log1.AppendText(self.data1)
self.cs,self.caddr = self.ss.accept()
#显示
self.Show(True)
#text
self.data1 = ''
self.temp1 = ''
self.msg1 = ''
self.flag1 = True
self.sendmsg1 = ''
def OnClick1(self,event):
self.msg1 = self.inputmsg1.GetValue()
self.sendmsg1 = (u"回复:%s\n" % (self.msg1))
self.log1.AppendText(self.sendmsg1)
self.cs.send(self.sendmsg1.encode())
self.inputmsg1.Clear()
def run1(self):
while True:
self.data1 = cs.recv(1024)
if not self.data1:
self.cs.close()
self.ss.close()
break
else:
self.temp1 = str(self.data1,'utf-8')
self.log1.AppendText(u'你好\n')
self.log1.AppendText(self.temp1)
def start(self):
thread1 = threading.Thread(target = self.run1)
thread1.setDaemon(True)
thread1.start()
app = wx.App(False)
frame1 = S(parent = None)
frame1.run1()
frame1.start()
app.MainLoop()
运行没有报错,但是出不来界面
self.cs,self.caddr = self.ss.accept()会等待挂起
所以,应把下面这段放在#连接前面
#显示
self.Show(True)
#text
self.data1 = ''
self.temp1 = ''
self.msg1 = ''
self.flag1 = True
self.sendmsg1 = ''