View Single Post
  #10  
Old 05-11-2007, 03:03 PM
pattie pattie is offline
Member
 
Join Date: Aug 2006
Posts: 32
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)
CLIENT CLIENT CLIENT CLIENT
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)
Reply With Quote