Client code:
from pandac.PandaModules import loadPrcFileData
loadPrcFileData("", "window-type none")
loadPrcFileData("", "client-sleep 0.001")
import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from direct.gui.DirectGui import *
from direct.actor.Actor import Actor
from direct.interval.IntervalGlobal import *
from pandac.PandaModules import *
from pandac.PandaModules import Camera
from direct.task import Task
import sys
class PandaUDPClient(DirectObject):
def __init__(self):
print "Hello my dog-faced opponents!" #Please excuse this... :p
self.target = NetAddress()
self.target.setHost('192.168.254.12',35167)
self.initNetwork()
def initNetwork(self):
self.cManager = ConnectionManager()
self.cWriter = ConnectionWriter(self.cManager,0)
self.connect()
def connect(self):
self.Connection = self.cManager.openUDPConnection()
taskMgr.add(self.sendBlast, "sendBlastTask", -39)
def readTask(self,task):
pass
def sendBlast(self,task):
package = NetDatagram()
package.addString("blast")
self.cWriter.send(package,self.Connection,self.target)
#taskMgr.doMethodLater(2,self.sendBlast,"sendBlastTask")
return Task.done
Conn = PandaUDPClient()
run()
Server code:
from pandac.PandaModules import loadPrcFileData
loadPrcFileData("", "window-type none")
loadPrcFileData("", "client-sleep 0.001")
import direct.directbase.DirectStart
from direct.showbase.DirectObject import DirectObject
from pandac.PandaModules import *
from direct.task import Task
from direct.distributed.PyDatagram import PyDatagram
from direct.distributed.PyDatagramIterator import PyDatagramIterator
import sys
class PandaUDPTest(DirectObject):
def __init__(self):
print "PandaUDP Test now starting..."
self.initNetwork()
def initNetwork(self):
#self.cManager = ConnectionManager()
self.cManager = QueuedConnectionManager()
self.cListener = QueuedConnectionListener(self.cManager, 0)
self.cReader = QueuedConnectionReader(self.cManager, 0)
#self.cReader = RecentConnectionReader(self.cManager)
self.cReader.setRawMode(1)
self.cWriter = ConnectionWriter(self.cManager,0)
self.startServer()
def startServer(self):
self.udpSocket = self.cManager.openUDPConnection(35167)
if not self.udpSocket:
print "WARNING: cannot Create UDP socket connection"
self.cListener.addConnection(self.udpSocket)
print 'Number of threads: ', self.cListener.getNumThreads()
taskMgr.add(self.listenTask,"serverListenTask",-40)
taskMgr.add(self.readTask,"serverReadTask",-39)
print "Server started"
def listenTask(self,task):
if self.cListener.newConnectionAvailable():
print "New Connection Detected"
return Task.cont
def readTask(self,task):
if self.cReader.dataAvailable():
print "New data available"
return Task.cont
Test = PandaUDPTest()
run()
When I run the server code, its fine. But when the client code attempts to send one “Blast” message, the server gets this error:
:net(error): Error when accepting new connection.
And it just loops forever printing that.
Can anyone please help?
(This was based on my other code that uses TCP instead)