Skip to content

Getting Started

BlueSquid1 edited this page Mar 25, 2017 · 2 revisions

Start Listening

int portNum = 8080;
TransportManager transMgr = new TransportManager(portNum);
transMgr.MsgReceived += (object sender, MsgReceivedEventArgs e) => 
{
    byte[] binaryMsg = e.Message;
    string receivedMsg = Encoding.ASCII.GetString(binaryMsg);
    Console.WriteLine("Received message = " + receivedMsg + " from ip = " + e.RemoteIp + " (" + e.BindingType + ")");
};
await transMgr.StartAsync();

Send UDP message

byte[] msgBits = Encoding.ASCII.GetBytes("Hello World");
string targetIP = "255.255.255.255"; //broadcast on local network
await transMgr.SendAsyncUDP(targetIP, msgBits);

Send TCP message

byte[] msgBits = Encoding.ASCII.GetBytes("Hello World");
string targetIP = "xxxx.xxxx.xxxx.xxxx"; //replace with a valid ip address
await transMgr.SendAsyncTCP(targetIP, msgBits);

Discover Other Peers

The above examples assume you already know the local ip address of the other peers. A UDP broadcast can be used to make a peer visible by other listening peers.

//new peers will trigger a peer change event
transMgr.PeerChange += (object sender, PeerChangeEventArgs e) =>
{
    List<Peer> knownPeers = e.Peers;
    foreach(Peer peer in knownPeers)
    {
        Console.WriteLine("peer's ip address = " + peer.IpAddress);
    }
};
await transMgr.StartAsync();

//when ready send a broadcast message
byte[] broadcastMsg = Encoding.ASCII.GetBytes("Hello everyone.");
await transMgr.SendBroadcastAsyncUDP(broadcastMsg);

Send Object

public class Dog
{
    public string Name { get; set; }
    public Dog(string dogName)
    {
        this.Name = dogName;
    }
}

public class Cat
{
    public string Name { get; set; }
    public Cat(string catName)
    {
        this.Name = catName;
    }
}

ObjectManager ObjMgr = new ObjectManager(portNum);
ObjMgr.ObjReceived += (object sender, P2PNET.ObjectLayer.EventArgs.ObjReceivedEventArgs e) =>
{
    Metadata metadata = e.Meta;
    switch(metadata.ObjectType)
    {
        case "Dog":
            Dog receivedDog = e.Obj.GetObject<Dog>();
            //proccess dog here
            break;
        case "Cat":
            Cat receivedCat = e.Obj.GetObject<Cat>();
            //proccess cat here
            break;
        default:
            Console.WriteLine("uknown received object type");
            break;
    }
};
await transMgr.StartAsync();

//when ready send the object
string targetIp = "xxxx.xxxx.xxxx.xxxx"; //replace with the ip address you want to send to
Dog dog = new Dog("Phillip");
await ObjMgr.SendAsyncTCP(targetIp, dog);

Clone this wiki locally