![]() |
|
|
|
#1
|
|||
|
|||
|
Client Server networking problem
Hi guys:
I think you might want to take a look at the sendAll function. It looks like it does not send the events to the clients (server works fine). Is it a bug in the client server code or did I forget something? Patrick |
|
#2
|
|||
|
|||
|
Are you using Vizard 2.5? Because the viznet module will only work with Vizard 3.0
|
|
#3
|
|||
|
|||
|
Cleint Server Networking problem
I am using the very last version on all machines
|
|
#4
|
|||
|
|||
|
I tested the sendAll command and it worked fine here. Can you post the scripts you are using? Also, in the future, please post Vizard 3.0 related question in the Vizard 3.0 forum.
|
|
#5
|
|||
|
|||
|
Client Server Networking problem
Sorry about posting this thread in the wrong place.
Here is the code I am using: SERVER SERVER SERVER SERVER: import viz import viznet viz.go() viz.clearcolor(.2,.2,.4) view = viz.get(viz.MAIN_VIEWPOINT) view.setPosition(70,45,-60) view.lookat(0,0,10) objectList = ['duck.wrl', 'logo.wrl', 'male.cfg', 'female.cfg' ] maze = viz.add('tankmaze.wrl') objects = {} UPDATE = viznet.id('update') CLIENT_DISCONNECTED = viznet.id('client_disconnected') CHAT = viznet.id('chat') viznet.server.start(port_in=14950, port_out = 14951) def onStartClient(e): print '** Client joined:', e.sender viz.callback(viznet.CLIENT_CONNECT_EVENT, onStartClient) def onStopClient(e): print '** Client left:', e.sender viznet.server.send(CLIENT_DISCONNECTED, client=e.sender) objects[e.sender].remove() #Remove object from map del objects[e.sender] #Delete user from array viz.callback(viznet.CLIENT_DISCONNECT_EVENT, onStopClient) def update(e): try: objects[e.sender].setPosition(e.pos) objects[e.sender].rotate(e.ori) except KeyError: objects[e.sender] = viz.add(objectList[e.object],scale= 2,2,2],pos=e.pos,euler=e.ori) objects[e.sender].tooltip = e.sender viz.callback(UPDATE, update) import viztip tth = viztip.ToolTip() tth.start() tth.setDelay(0) def updateChat(msg): text.message('\n'.join(text.getMessage().split('\n ')[1:])+'\n'+msg) text = viz.addText('\n\n\n\n', viz.SCREEN) # send 4 carriage returns to screen text.alignment(viz.TEXT_LEFT_BOTTOM) text.fontSize(25) text.translate(0.05,0.08) input = viz.addText('>_', viz.SCREEN) # Add Chat prompt input.alignment(viz.TEXT_LEFT_BOTTOM) input.fontSize(25) input.translate(0.032,0.05) input.visible(0) #Only visible when in type mode def onChat(e): updateChat(e.client+': '+e.chat) viz.callback(CHAT,onChat) talking = False def onKeyDown(key): global talking if key == 'y' and not talking: # Start talking mode talking = True input.message('> _') input.visible(1) elif key == viz.KEY_ESCAPE and talking: # Exit talking mode talking = False input.visible(0) return True elif talking and key == viz.KEY_RETURN: # Send message talking = False viznet.server.send(CHAT,client='SERVER',chat=input .getMessage()[2:-1]) input.visible(0) # Update display with our message updateChat('SERVER'+': '+input.getMessage()[2:-1]) elif talking and key == viz.KEY_BACKSPACE: # Delete a character if len(input.getMessage()) > 3: input.message(input.getMessage()[:-2]+'_') elif len(key) > 1: # Handle special keys return False elif talking and 32 <= ord(key) <= 126: # Input message input.message(input.getMessage()[:-1]+key+'_') viz.callback(viz.KEYDOWN_EVENT,onKeyDown,priority=-6) CLIENT CLIENT CLIENT CLIENT import viz import viznet import vizinfo viz.go() viz.clearcolor(.2,.2,.4) maze = viz.add('tankmaze.wrl') objects = {} SEND_UPDATE_TIMER = 1 UPDATE = viznet.id('update') CLIENT_DISCONNECTED = viznet.id('client_disconnected') CHAT = viznet.id('chat') SERVER_NAME=viz.input('Enter Server Name') while not viznet.client.connect(SERVER_NAME,port_in=14951,po rt_out=14950): if viz.ask('Could not connect to ' + SERVER_NAME + ' would you like to try another?'): SERVER_NAME=viz.input('Enter Server Name') else: viz.quit() break objectList = ['duck.wrl','logo.wrl','male.cfg','female.cfg'] obj_choice=viz.choose('Connected. Select your character',objectList) def mytimer(num): if num == SEND_UPDATE_TIMER: ori= viz.get(viz.HEAD_ORI) pos = viz.get(viz.HEAD_POS) viznet.client.sendAll(UPDATE,client=viz.getCompute rName (),object=obj_choice,pos=pos,ori=ori) viz.callback(viz.TIMER_EVENT, mytimer) viz.starttimer(SEND_UPDATE_TIMER, .05, -1) def update(e): if e.client != viz.getComputerName(): try: objects[e.client].setPosition(e.pos) objects[e.client].rotate(e.ori) except KeyError: objects[e.client] = viz.add(objectList[e.object],scale=[2,2,2],pos=e.pos,euler=e.ori) objects[e.client].tooltip = e.client viz.callback(UPDATE,update) def client_disconnected(e): objects[e.client].remove() del objects[e.client] viz.callback(CLIENT_DISCONNECTED,client_disconnect ed) def onStopServer(e): print 'Disconnected from server' viz.quit() viz.callback(viznet.SERVER_DISCONNECT_EVENT,onStop Server) import viztip tth = viztip.ToolTip() tth.start() tth.setDelay(0) def updateChat(msg): text.message('\n'.join(text.getMessage().split('\n ')[1:])+'\n'+msg) text = viz.addText('\n\n\n\n',viz.SCREEN) text.alignment(viz.TEXT_LEFT_BOTTOM) text.fontSize(25) text.translate(.05,.08) input = viz.addText('> _',viz.SCREEN) input.fontSize(25) input.translate(.032,.05) input.visible(0) def onChat(e): updateChat(e.client+': '+e.chat) viz.callback(CHAT,onChat) talking = False def onKeyDown(key): global talking if key == 'y' and not talking: talking = True input.message('> _') input.visible(1) elif key == viz.KEY_ESCAPE and talking: talking = False input.visible(0) return True elif talking and key == viz.KEY_RETURN: talking = False viznet.client.sendAll(CHAT,client=viz.getComputerN ame(),chat=input.getMessage()[2:-1]) input.visible(0) elif talking and key == viz.KEY_BACKSPACE: if len(input.getMessage()) > 3: input.message(input.getMessage()[:-2]+'_') elif len(key) > 1: return False elif talking and 32 <= ord(key) <= 126: input.message(input.getMessage()[:-1]+key+'_') viz.callback(viz.KEYDOWN_EVENT,onKeyDown,priority=-6) |
|
#6
|
|||
|
|||
|
Hi,
Can you repost the code using the special code tags? HTML Code:
[code]insert code here[/code] |
|
#7
|
|||
|
|||
|
Client Server Networking problem
No need for the chat management code, I experimented without it.
SERVER SERVER SERVER SERVER Code:
import viz
import viznet
viz.go()
viz.clearcolor(.2,.2,.4)
view = viz.get(viz.MAIN_VIEWPOINT)
view.setPosition(70,45,-60)
view.lookat(0,0,10)
objectList = ['duck.wrl', 'logo.wrl', 'male.cfg', 'female.cfg' ]
maze = viz.add('tankmaze.wrl')
objects = {}
UPDATE = viznet.id('update')
CLIENT_DISCONNECTED = viznet.id('client_disconnected')
CHAT = viznet.id('chat')
viznet.server.start(port_in=14950, port_out = 14951)
def onStartClient(e):
print '** Client joined:', e.sender
viz.callback(viznet.CLIENT_CONNECT_EVENT, onStartClient)
def onStopClient(e):
print '** Client left:', e.sender
viznet.server.send(CLIENT_DISCONNECTED, client=e.sender)
objects[e.sender].remove() #Remove object from map
del objects[e.sender] #Delete user from array
viz.callback(viznet.CLIENT_DISCONNECT_EVENT, onStopClient)
def update(e):
try:
objects[e.sender].setPosition(e.pos)
objects[e.sender].rotate(e.ori)
except KeyError:
objects[e.sender] = viz.add(objectList[e.object],scale=[2,2,2],pos=e.pos,euler=e.ori)
objects[e.sender].tooltip = e.sender
viz.callback(UPDATE, update)
import viztip
tth = viztip.ToolTip()
tth.start()
tth.setDelay(0)
Code:
import viz
import viznet
import vizinfo
viz.go()
viz.clearcolor(.2,.2,.4)
maze = viz.add('tankmaze.wrl')
objects = {}
SEND_UPDATE_TIMER = 1
UPDATE = viznet.id('update')
CLIENT_DISCONNECTED = viznet.id('client_disconnected')
CHAT = viznet.id('chat')
SERVER_NAME=viz.input('Enter Server Name')
while not viznet.client.connect(SERVER_NAME,port_in=14951,port_out=14950):
if viz.ask('Could not connect to ' + SERVER_NAME + ' would you like to try another?'):
SERVER_NAME=viz.input('Enter Server Name')
else:
viz.quit()
break
objectList = ['duck.wrl','logo.wrl','male.cfg','female.cfg']
obj_choice=viz.choose('Connected. Select your character',objectList)
def mytimer(num):
if num == SEND_UPDATE_TIMER:
ori= viz.get(viz.HEAD_ORI)
pos = viz.get(viz.HEAD_POS)
viznet.client.sendAll(UPDATE,client=viz.getComputerName(),object=obj_choice,pos=pos,ori=ori)
viz.callback(viz.TIMER_EVENT, mytimer)
viz.starttimer(SEND_UPDATE_TIMER, .05, -1)
def update(e):
if e.client != viz.getComputerName():
try:
objects[e.client].setPosition(e.pos)
objects[e.client].rotate(e.ori)
except KeyError:
objects[e.client] = viz.add(objectList[e.object],scale=[2,2,2],pos=e.pos,euler=e.ori)
objects[e.client].tooltip = e.client
viz.callback(UPDATE,update)
#The client_disconnected function performs some simple cleanup when another client disconnects,
#and the onStopServer function closes the client.
def client_disconnected(e):
objects[e.client].remove()
del objects[e.client]
viz.callback(CLIENT_DISCONNECTED,client_disconnected)
def onStopServer(e):
print 'Disconnected from server'
viz.quit()
viz.callback(viznet.SERVER_DISCONNECT_EVENT,onStopServer)
import viztip
tth = viztip.ToolTip()
tth.start()
tth.setDelay(0)
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|