Sections
Timeline
Browse Source
Sub-Sections
Start Page
Index
History
Last Change
Download
Plain Text
Metanav
Preferences
About Trac
Links
Slowchop Studios
Gerald Kaszuba
Advertisement

Basic Example

The client connects to the server, then the server responds with a packet to tell the client quit.

import time
import struct 

import pyraknet
from pyraknet import PacketTypes, PacketReliability, PacketPriority

class PeerBase(object):
        def loop(self):
                while not self.quit:
                        time.sleep(0.5)
                        packet = self.net.receive()
                        if packet:
                                self.handle_packet(packet)

class Client(PeerBase):
        def __init__(self):
                self.net = pyraknet.Peer()
                self.net.init(thread_sleep_timer=30)
                self.net.connect('localhost', 5555)
                self.quit = False
                print 'Connecting to server...'
        def handle_packet(self, packet):
                packet_type = ord(packet.data[0])
                if packet_type == PacketTypes.ID_CONNECTION_ATTEMPT_FAILED:
                        print 'Could not connect. Quitting...'
                        self.quit = True
                elif packet_type == PacketTypes.ID_CONNECTION_REQUEST_ACCEPTED:
                        print 'Connecetd to server!'
                elif packet_type == PacketTypes.ID_USER_PACKET_ENUM:
                        print 'Server told me to quit. Quitting...'
                        self.quit = True

class Server(PeerBase):
        def __init__(self):
                self.net = pyraknet.Peer()
                self.net.init(peers=10, port=5555, thread_sleep_timer=30)
                self.net.set_max_connections(10)
                self.quit = False
                print 'Waiting for a connection'
        def handle_packet(self, packet):
                packet_type = ord(packet.data[0])
                if packet_type == PacketTypes.ID_NEW_INCOMING_CONNECTION:
                        print 'A client just connected. Sending a quit order.'
                        data = struct.pack('B', PacketTypes.ID_USER_PACKET_ENUM)
                        self.net.send(data, len(data), PacketPriority.MEDIUM_PRIORITY, PacketReliability.RELIABLE, 0, packet.address)
                
if __name__ == '__main__':
        what = raw_input('(C)lient or (S)erver? ')
        if what[0] == 'C' or what[0] == 'c':
                me = Client()
        else:
                me = Server()
        me.loop()