您的位置:首页 > 其它

套接字服务端,启动指定客户端 通讯

2016-05-16 10:47 357 查看
#coding:utf-8
import threading
import os, os.path, sys
from Cura.util import profile
import win32process, win32event
import socket

#coding:utf-8
import threading
import os, os.path, sys
import win32process, win32event
import socket
import time
import errno

serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
serverPortNr = 49677

try:
serversocket.bind(('127.0.0.1', serverPortNr))
except:
print("Failed to listen on port: %d" % (serverPortNr))
exit(110)

def loadStl(filename, sceneView):
try:
filenames = [filename]
profile.putPreference('lastFile', filenames[0])
sceneView.loadFiles(filenames)
except Exception, e:
pass

def socketConnectionThread(sock, sceneView):
while True:
try:
data = sock.recv(1024)
except:
data = ''
if len(data) == 0:
sock.close()
return
print data
uro = ("%s" % data)
if (uro.find(":") > -1):
print "load data"

index = uro.find(":")
path = uro[index - 1:len(uro)]
loadStl(path, sceneView)
time.sleep(1)
command = 'taskkill /f /im cefclient.exe'
os.system(command)

break

def socketListenThread(serversocket, sceneView, serverPortNr):
serversocket.listen(1)
print 'Listening for engine communications on %d' % (serverPortNr)
while True:
try:
sock, address= serversocket.accept()
thread = threading.Thread(target=socketConnectionThread, args=(sock,sceneView))
thread.daemon = True
thread.start()
except socket.error, e:
if e.errno != errno.EINTR:
raise

def runexe(mpath,mexe):
command = 'taskkill /f /im cefclient.exe'
os.system(command)
time.sleep(1)
try :
hProcess, hThread, dwProcessId, dwThreadId = win32process.CreateProcess(os.path.join(mpath, mexe),
'', None, None, 0,
win32process.CREATE_NO_WINDOW,
None ,
mpath,
win32process.STARTUPINFO())
except Exception, e:
print "Create Error!"

def showDlg(sceneView):
mpath = os.path.join(os.path.dirname(__file__), "../../Release")
mexe = "cefclient.exe"

thread0 = threading.Thread(target=runexe, args=(mpath,mexe,))#启动浏览器
thread0.daemon = True
thread0.start()

thread = threading.Thread(target=socketListenThread, args=(serversocket, sceneView,serverPortNr) )#启动服务器端,坚挺浏览器连接
thread.daemon = True
thread.start()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: