 |
BorlandTalk.com Borland discussion newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Paul Nicholls Guest
|
Posted: Mon Nov 15, 2004 12:05 am Post subject: adding 'ordered', 'sequenced' and 'reliable' transmissions t |
|
|
Hi all,
Using Synapse TUDPBlockSocket components, and some threads, I have
created working UDP client and UDP server classes. They work like so:
Both the client and server classes have a write thread for outgoing data
packets and a read thread for incoming data packets.
Incoming data packets are pushed onto a private thread safe
FIncomingNetworkPacketQueue ready for the host program to pop off packets
when it is ready; ie. loop, timer, etc.
Outgong data packets are pushed onto a private thread safe
FOutgoingNetworkPacketQueue read for the write thread to check for packets,
pop them off and send them to their destination.
Each packet has a priority number that I am ignoring for the moment and just
sending as unreliable plain UDP transmission...
This works fine, but now as well as normal unreliable UDP transmissions I
want to add ordered, sequenced and reliable transmissions similar to what is
on this site
([url]http://www.rakkarsoft.com/raknet/manual/reliabilitytypes.html)[/url].
My problem is that I am unsure which way to jump when re-designing the
classes to accomodate this.
As I see it, I have 2 options:
1) in the write thread, check the packet priority, and if it is Reliable,
Reliable_Ordered, or Reliable_Sequenced, spawn another appropriate write
thread type to take care of the transmission of this packet type.
2) increase the size of the write thread to take into account the
statuses of any of the above packet types, and what is happening to them...
Any ideas?
--
Cheers,
Paul.
"The plastic veneer of civilization is easily melted in the heat of the
momemt" - Paul Nicholls.
[email]paul_nicholls (AT) hotmail (DOT) NOSPAM.com[/email]
Remove ".NOSPAM" to reply.
|
|
| Back to top |
|
 |
Martin James Guest
|
Posted: Mon Nov 15, 2004 6:13 am Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
| Quote: | Hi all,
Using Synapse TUDPBlockSocket components, and some threads, I have
created working UDP client and UDP server classes. They work like so:
Both the client and server classes have a write thread for outgoing data
packets and a read thread for incoming data packets.
|
OK
| Quote: | Incoming data packets are pushed onto a private thread safe
FIncomingNetworkPacketQueue ready for the host program to pop off packets
when it is ready; ie. loop, timer, etc.
|
OK - ish, though 'loop, timer' sounds a bit off.
| Quote: | Outgong data packets are pushed onto a private thread safe
FOutgoingNetworkPacketQueue read for the write thread to check for
packets,
pop them off and send them to their destination.
|
OK
| Quote: | Each packet has a priority number that I am ignoring for the moment and
just
sending as unreliable plain UDP transmission...
|
OK
| Quote: | This works fine, but now as well as normal unreliable UDP transmissions I
want to add ordered, sequenced and reliable transmissions similar to what
is
on this site
([url]http://www.rakkarsoft.com/raknet/manual/reliabilitytypes.html)[/url].
|
I do not understand why anyone would use UDP for ordered, sequenced and
reliable transmissions when there is another protocol available, but, OK.
| Quote: | My problem is that I am unsure which way to jump when re-designing the
classes to accomodate this.
As I see it, I have 2 options:
1) in the write thread, check the packet priority, and if it is
Reliable,
Reliable_Ordered, or Reliable_Sequenced, spawn another appropriate write
thread type to take care of the transmission of this packet type.
2) increase the size of the write thread to take into account the
statuses of any of the above packet types, and what is happening to
them...
Any ideas?
|
Well, it sounds like a protocol stack, where each level is dependent upon
the services provided by the layers above & below: ,
ReliableSequenced
ReliableOrdered
Reliable
Unreliable
UDPsocket
Is that it? If so, you should probably design it as one. First, define
classes for the protocol units between each layer, then a thread methods for
each layer that handle the various protocol data units. Then create a load
of these threads that wait on a single waitable queue, get the PDUs of the
various layers & case-switch on the class type, or some internal
enumeration, to handler methods that process the PDU requeue it as another
type, either one up or one down, depending on the 'direction' of the PDU &
whether it's errored or not.
To enable your app to inject PDUs at various levels into the stack, you may
well have to defined some exra classes/fields/whatever to prevent PDUs
loaded in at an intermediate level being passed too far back up the stack,
but it should be doable.
Wots wrong with TCP? Too slow for your 'Doom IV'?
Rgds,
Martin
|
|
| Back to top |
|
 |
Paul Nicholls Guest
|
Posted: Mon Nov 15, 2004 10:24 pm Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
"Martin James" <mjames_falcon (AT) dial (DOT) pipex.com> wrote
| Quote: | Hi all,
Using Synapse TUDPBlockSocket components, and some threads, I have
created working UDP client and UDP server classes. They work like so:
Both the client and server classes have a write thread for outgoing data
packets and a read thread for incoming data packets.
OK
Incoming data packets are pushed onto a private thread safe
FIncomingNetworkPacketQueue ready for the host program to pop off packets
when it is ready; ie. loop, timer, etc.
OK - ish, though 'loop, timer' sounds a bit off.
|
That was the quickest and easiest way I could think of to get the packets to
the host program.
What better ideas are there? In my server program at the moment, it is a
console app (this may change) and I am using a loop.
In my client program I am using a timer...
| Quote: | Outgong data packets are pushed onto a private thread safe
FOutgoingNetworkPacketQueue read for the write thread to check for
packets,
pop them off and send them to their destination.
OK
Each packet has a priority number that I am ignoring for the moment and
just
sending as unreliable plain UDP transmission...
OK
This works fine, but now as well as normal unreliable UDP transmissions I
want to add ordered, sequenced and reliable transmissions similar to what
is
on this site
([url]http://www.rakkarsoft.com/raknet/manual/reliabilitytypes.html)[/url].
I do not understand why anyone would use UDP for ordered, sequenced and
reliable transmissions when there is another protocol available, but, OK.
|
Well, most of my game packets will be using unreliable or unreliable
sequenced so UDP is fine, but it is for the occational reliable, reliable
sequenced, and reliable ordered that I want to use the special transmissions
for.
This is why I don't want to use TCP for my transmissions. What protocol
would you suggest then?
| Quote: | My problem is that I am unsure which way to jump when re-designing the
classes to accomodate this.
As I see it, I have 2 options:
1) in the write thread, check the packet priority, and if it is
Reliable,
Reliable_Ordered, or Reliable_Sequenced, spawn another appropriate write
thread type to take care of the transmission of this packet type.
2) increase the size of the write thread to take into account the
statuses of any of the above packet types, and what is happening to
them...
Any ideas?
Well, it sounds like a protocol stack, where each level is dependent upon
the services provided by the layers above & below: ,
ReliableSequenced
ReliableOrdered
Reliable
Unreliable Sequenced
Unreliable
UDPsocket
Is that it?
|
yes, I suppose so :-)
| Quote: | If so, you should probably design it as one. First, define
classes for the protocol units between each layer, then a thread methods
for
each layer that handle the various protocol data units. Then create a
load
of these threads that wait on a single waitable queue, get the PDUs of the
various layers & case-switch on the class type, or some internal
enumeration, to handler methods that process the PDU requeue it as another
type, either one up or one down, depending on the 'direction' of the PDU &
whether it's errored or not.
To enable your app to inject PDUs at various levels into the stack, you
may
well have to defined some exra classes/fields/whatever to prevent PDUs
loaded in at an intermediate level being passed too far back up the stack,
but it should be doable.
|
I'm not sure how to start with sketching the 'outlines' of the classes for
the protocol units, etc...
Could you put in some pseudo code on how you would see the class definitions
looking like?
| Quote: | Wots wrong with TCP? Too slow for your 'Doom IV'?
|
hehe! <G>
Well I have now mentioned above why I want to use UDP (or similar) :)
Thanks for your time, and I appreciate your advice :-)
|
|
| Back to top |
|
 |
Martin James Guest
|
Posted: Tue Nov 16, 2004 10:18 am Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
| Quote: |
I'm not sure how to start with sketching the 'outlines' of the classes for
the protocol units, etc...
Could you put in some pseudo code on how you would see the class
definitions
looking like?
|
Having thought about it a bit more, and looking at an old stack I had
forgotten about, a non-sreaming protocol like UDP is better off with a
sequence of packed record declaratons insdie one buffer class, rather than a
'classic' class heirarchy. I looked at an old project & found something
which I edited to amke it look like your requirements:
**************************************
TheaderL1=packed record
sentAtLevel:EprotocolLevel;
Len:integer;
end;
TheaderL2=packed record
// reliable management data
end;
TheaderL3=packed record
// ordered management data
end;
TheaderL4=packed record
// sequenced management data
end;
TDUPheaders=packed record
L4Header:TheaderL4;
L3Header:TheaderL3;
L2Header:TheaderL2;
L1Header:TheaderL1;
end;
TUPDdatagram=packed record
headers:TDUPheaders;
Data:array[0..CmaxDatagramSize-1] of byte;
end;
TUDPbuffer=class(TpooledObject)
private
FonData: TnotifyEvent;
public
txIP:string;
txPort:string;
goingDown:boolean;
refCount:integer;
currentLevel:EprotocolLevel;
eMess:string;
errCode:integer;
trData:TUPDdatagram;
property onData:TnotifyEvent read FonData write FonData;
procedure returnToSender; override;
end;
**************************************
Basically, the header records contain all the management data for all the
levels that needs to be transferred with the datagram. The class contains
all the 'local' stuff used within the app.
If you like, I'll try & get a demo stack working. If I take my old code &
put synapse UDP at the bottom and some timers at the top to generate the
various messages, I should be able to throw something together.that actually
works. It may not be pretty and it won't actually do anything about the
sequencing, ordering etc, (the methods will be empty and so every datagram
will be unreliable), but if you have not written a stack before it may be
helpful.
Rgds,
Martin
|
|
| Back to top |
|
 |
Paul Nicholls Guest
|
Posted: Tue Nov 16, 2004 10:13 pm Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
"Martin James" <mjames_falcon (AT) dial (DOT) pipex.com> wrote
| Quote: |
I'm not sure how to start with sketching the 'outlines' of the classes
for
the protocol units, etc...
Could you put in some pseudo code on how you would see the class
definitions
looking like?
Having thought about it a bit more, and looking at an old stack I had
forgotten about, a non-sreaming protocol like UDP is better off with a
sequence of packed record declaratons insdie one buffer class, rather than
a
'classic' class heirarchy. I looked at an old project & found something
which I edited to amke it look like your requirements:
|
Ok
<SNIP>
| Quote: | Basically, the header records contain all the management data for all the
levels that needs to be transferred with the datagram. The class contains
all the 'local' stuff used within the app.
|
Ok
| Quote: | If you like, I'll try & get a demo stack working. If I take my old code &
put synapse UDP at the bottom and some timers at the top to generate the
various messages, I should be able to throw something together.that
actually
works. It may not be pretty and it won't actually do anything about the
sequencing, ordering etc, (the methods will be empty and so every datagram
will be unreliable), but if you have not written a stack before it may be
helpful.
Rgds,
Martin
|
That would be great if you could get a stack demo working that I could look
at :)
Thanks for your input!
Cheers,
Paul.
|
|
| Back to top |
|
 |
Robby Tanner Guest
|
Posted: Tue Nov 16, 2004 11:41 pm Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
"Paul Nicholls" <paul_nicholls (AT) hotmail (DOT) NOSPAM.com> wrote
| Quote: | "Martin James" <mjames_falcon (AT) dial (DOT) pipex.com> wrote in message
news:419848bb (AT) newsgroups (DOT) borland.com...
Well, most of my game packets will be using unreliable or unreliable
sequenced so UDP is fine, but it is for the occational reliable, reliable
sequenced, and reliable ordered that I want to use the special
transmissions
for.
This is why I don't want to use TCP for my transmissions. What protocol
would you suggest then?
|
Why not use both a UDP and TCP socket for handling what you're after?
Rob
|
|
| Back to top |
|
 |
Paul Nicholls Guest
|
Posted: Wed Nov 17, 2004 12:02 am Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
"Robby Tanner" <robby.tanner-remove-this-part (AT) lightsource (DOT) ca> wrote in
message news:419a9008$1 (AT) newsgroups (DOT) borland.com...
| Quote: |
"Paul Nicholls" <paul_nicholls (AT) hotmail (DOT) NOSPAM.com> wrote in message
news:41992ccf (AT) newsgroups (DOT) borland.com...
"Martin James" <mjames_falcon (AT) dial (DOT) pipex.com> wrote in message
news:419848bb (AT) newsgroups (DOT) borland.com...
Well, most of my game packets will be using unreliable or unreliable
sequenced so UDP is fine, but it is for the occational reliable, reliable
sequenced, and reliable ordered that I want to use the special
transmissions
for.
This is why I don't want to use TCP for my transmissions. What protocol
would you suggest then?
Why not use both a UDP and TCP socket for handling what you're after?
Rob
|
I had thought of that, but it seems easier if I only have to deal with 1
connection?
|
|
| Back to top |
|
 |
Robby Tanner Guest
|
Posted: Wed Nov 17, 2004 1:13 am Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
"Paul Nicholls" <paul_nicholls (AT) hotmail (DOT) NOSPAM.com> wrote
| Quote: | "Robby Tanner" <robby.tanner-remove-this-part (AT) lightsource (DOT) ca> wrote in
message news:419a9008$1 (AT) newsgroups (DOT) borland.com...
"Paul Nicholls" <paul_nicholls (AT) hotmail (DOT) NOSPAM.com> wrote in message
news:41992ccf (AT) newsgroups (DOT) borland.com...
"Martin James" <mjames_falcon (AT) dial (DOT) pipex.com> wrote in message
news:419848bb (AT) newsgroups (DOT) borland.com...
Why not use both a UDP and TCP socket for handling what you're after?
Rob
I had thought of that, but it seems easier if I only have to deal with 1
connection?
|
I'm not so sure. You get all the features you want using two separate and
readily available components. From my limited knowledge, I can't see that
you gain much from using a single socket. It can be done and you don't have
to struggle with any of the network layer, just application. That's the
route I'd take anyway.
If you need to send to multiple "clients" in about the same time, you'd use
a server socket to do it; so either you'd have a server application handling
distribution, or each game executable would have at least three sockets.
Rob
|
|
| Back to top |
|
 |
Paul Nicholls Guest
|
Posted: Wed Nov 17, 2004 1:29 am Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
"Robby Tanner" <robby.tanner-remove-this-part (AT) lightsource (DOT) ca> wrote in
message news:419aa5c2$1 (AT) newsgroups (DOT) borland.com...
| Quote: |
"Paul Nicholls" <paul_nicholls (AT) hotmail (DOT) NOSPAM.com> wrote in message
news:419a953e$1 (AT) newsgroups (DOT) borland.com...
"Robby Tanner" <robby.tanner-remove-this-part (AT) lightsource (DOT) ca> wrote in
message news:419a9008$1 (AT) newsgroups (DOT) borland.com...
"Paul Nicholls" <paul_nicholls (AT) hotmail (DOT) NOSPAM.com> wrote in message
news:41992ccf (AT) newsgroups (DOT) borland.com...
"Martin James" <mjames_falcon (AT) dial (DOT) pipex.com> wrote in message
news:419848bb (AT) newsgroups (DOT) borland.com...
Why not use both a UDP and TCP socket for handling what you're after?
Rob
I had thought of that, but it seems easier if I only have to deal with 1
connection?
I'm not so sure. You get all the features you want using two separate and
readily available components. From my limited knowledge, I can't see that
you gain much from using a single socket. It can be done and you don't
have
to struggle with any of the network layer, just application. That's the
route I'd take anyway.
|
Ok
| Quote: | If you need to send to multiple "clients" in about the same time, you'd
use
a server socket to do it; so either you'd have a server application
handling
distribution, or each game executable would have at least three sockets.
|
I will have a client-server setup so the server can handle distribution.
BTW, without a server, why would each game executable need at least 3
sockets?
|
|
| Back to top |
|
 |
Martin James Guest
|
Posted: Wed Nov 17, 2004 9:59 am Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
| Quote: |
That would be great if you could get a stack demo working that I could
look
at :)
|
In 'attachments'. As promised, the methods/levels that handle anything
except 'unreliable' just pass the buffer onto the next layer, but you can
see how buffers can be sent in at any level and will emeerge at the other
end at the same level.
Basically, the stack is started and four timers send stuff at the four
different levels. Received datagrams are displayed in a memo. There is
nothing fancy - the memo will probably fill up if you leave it running long
enough, bit that's a minor thing.
I had to leave a lot of gunge in because I ripped the outline from another
project, but it may help your design.
To get it going, (assuming it compiles), start a couple of instances and
swap over the port numbers in one of them. If on different machines, you
will have to change the hostname box too since it defaults to 'localhost'.
Then click 'start' on both & they should begin exchanging datagrams at the
various levels.
Rgds,
Martin
|
|
| Back to top |
|
 |
Robby Tanner Guest
|
Posted: Wed Nov 17, 2004 10:56 pm Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
| Quote: | Ok
If you need to send to multiple "clients" in about the same time, you'd
use
a server socket to do it; so either you'd have a server application
handling
distribution, or each game executable would have at least three sockets.
I will have a client-server setup so the server can handle distribution.
BTW, without a server, why would each game executable need at least 3
sockets?
|
I hadn't thought it through. You'd need a bunch of sockets. Each game
would require a client socket for each of the other peers and its own TCP
server socket for all other peers to connect to. I see client/server
architecture as perfereable in this case.
Rob
|
|
| Back to top |
|
 |
Paul Nicholls Guest
|
Posted: Wed Nov 17, 2004 11:04 pm Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
"Martin James" <mjames_falcon (AT) dial (DOT) pipex.com> wrote
| Quote: |
That would be great if you could get a stack demo working that I could
look
at :)
In 'attachments'. As promised, the methods/levels that handle anything
except 'unreliable' just pass the buffer onto the next layer, but you can
see how buffers can be sent in at any level and will emeerge at the other
end at the same level.
Basically, the stack is started and four timers send stuff at the four
different levels. Received datagrams are displayed in a memo. There is
nothing fancy - the memo will probably fill up if you leave it running
long
enough, bit that's a minor thing.
I had to leave a lot of gunge in because I ripped the outline from another
project, but it may help your design.
To get it going, (assuming it compiles), start a couple of instances and
swap over the port numbers in one of them. If on different machines, you
will have to change the hostname box too since it defaults to 'localhost'.
Then click 'start' on both & they should begin exchanging datagrams at the
various levels.
Rgds,
Martin
Cool, that was quick Martin! Thanks very much  |
I will take a look at it
It should give me some good ideas where to head next with my client/server
classes :-)
Thanks again for your help,
Cheers,
Paul.
|
|
| Back to top |
|
 |
Paul Nicholls Guest
|
Posted: Wed Nov 17, 2004 11:29 pm Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
"Paul Nicholls" <paul_nicholls (AT) hotmail (DOT) NOSPAM.com> wrote
| Quote: | "Martin James" <mjames_falcon (AT) dial (DOT) pipex.com> wrote in message
news:419b20d5 (AT) newsgroups (DOT) borland.com...
SNIP
To get it going, (assuming it compiles), start a couple of instances and
swap over the port numbers in one of them. If on different machines, you
will have to change the hostname box too since it defaults to
'localhost'.
Then click 'start' on both & they should begin exchanging datagrams at
the
various levels.
Rgds,
Martin
Cool, that was quick Martin! Thanks very much
I will take a look at it
It should give me some good ideas where to head next with my client/server
classes :-)
Thanks again for your help,
Cheers,
Paul.
|
Hi Martin, I ran two instances of the .exe (yours and then mine after
recompiling).
I then changed one instances remote port to the local port of the other one
+ changed its local port to the remote port of the other one like so:.
Local port: 4000
Remote port: 4001
Remote host: localhost
Local port: 4001
Remote port: 4000
Remote host: localhost
I then and clicked start on both. The only thing that happens is both print
up '***** Stack created & started', put 99 in the status bar and nothing
else seems to happen, at least nothing else appears in the memo...
Am I doing this correctly?
Cheers,
Paul.
|
|
| Back to top |
|
 |
Paul Nicholls Guest
|
Posted: Wed Nov 17, 2004 11:41 pm Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
"Paul Nicholls" <paul_nicholls (AT) hotmail (DOT) NOSPAM.com> wrote
| Quote: | "Paul Nicholls" <paul_nicholls (AT) hotmail (DOT) NOSPAM.com> wrote in message
news:419bd92e (AT) newsgroups (DOT) borland.com...
"Martin James" <mjames_falcon (AT) dial (DOT) pipex.com> wrote in message
news:419b20d5 (AT) newsgroups (DOT) borland.com...
SNIP
To get it going, (assuming it compiles), start a couple of instances and
swap over the port numbers in one of them. If on different machines,
you
will have to change the hostname box too since it defaults to
'localhost'.
Then click 'start' on both & they should begin exchanging datagrams at
the
various levels.
Rgds,
Martin
SNIP
Hi Martin, I ran two instances of the .exe (yours and then mine after
recompiling).
I then changed one instances remote port to the local port of the other
one + changed its local port to the remote port of the other one like so:.
Local port: 4000
Remote port: 4001
Remote host: localhost
Local port: 4001
Remote port: 4000
Remote host: localhost
I then and clicked start on both. The only thing that happens is both
print up '***** Stack created & started', put 99 in the status bar and
nothing else seems to happen, at least nothing else appears in the memo...
Am I doing this correctly?
Cheers,
Paul.
|
Ok, I got it working by typing in my computer name instead of localhost for
both instances!!! Seems strange...
cheers,
Paul.
|
|
| Back to top |
|
 |
Martin James Guest
|
Posted: Thu Nov 18, 2004 7:16 am Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio |
|
|
Since even I can make an occasional mistake, (?), I checked my 'Sent mail',
opened the original post, (UDPstack.zip), copied the zip file out into a
temp folder & started two exe's. Swapping over the ports in one isntance
like you did, I started the stacks for a couple seconds then stopped it: I
copied/pasted out the result as below.
I then compiled the source code from the posts & made another exe. That
worked as well.
I then tried UDPstack2.zip - the source in the 'fixed' version, compiles &
ran.
That worked OK too.
That's on W2k. I'll try it on XP later, just in case. I don't suppose
you're too bothered whether it works on W98 :)
XP firewall blocking 4000/4001 UDP?? Maybee you use different ports in your
app? This seems unlikely since the receiving UDPblockSocket is bound to the
port at stack creation time in the main thread, and I would expect a
messagebox from the Windows exception handler moaning that the port could
not be bound.
Failing that, I can't see what else I can try, since I have no problem. I
suppose I could ask you to debug it, but, IMHO, that's not how demos are
supposed to work!
Since I hacked the demo together from bits of other projects, there is
little error handling. Maybe I should add some to make a proper demo. The
mechanism is there for it, I just did not implement it 'cos it was a quick
demo.
The '99' is a dump of the UDP buffer pool level, simply polled by a timer
once per sec. The pool is created with 100 buffers when the app is started
& the UDP rx thread extracts one when the stack is started, ready for any
incoming datagrams, leaving 99. Since the timers that generate the load
have such large intervals, the pool level hovers around ~98 when running.
It should return to 100 if the stack is stopped. This dump was one of the
reasons that I sent the 'UDPstack2' version - a line commented out in the
original code resulted in the 'suicide request' buffer, sent to terminate
the threads when the stack is shut down, was not released back to the pool,
which then lost one buffer for every invocation of the stack. This is not a
serious problem for many apps since the stack would likely be created only
once at startup, but nevertheless, it was a bug.
Rgds,
Martin
***** Stack created & started
Rx unreliable datagram from port: MJ2KBOX:4001
Rx reliable datagram from port: MJ2KBOX:4001
Rx ordered datagram from port: MJ2KBOX:4001
Rx sequenced datagram from port: MJ2KBOX:4001
Rx unreliable datagram from port: MJ2KBOX:4001
Rx reliable datagram from port: MJ2KBOX:4001
Rx ordered datagram from port: MJ2KBOX:4001
Rx unreliable datagram from port: MJ2KBOX:4001
Rx sequenced datagram from port: MJ2KBOX:4001
Rx reliable datagram from port: MJ2KBOX:4001
***** Stack shut down & freed
***** Stack created & started
Rx sequenced datagram from port: MJ2KBOX:4000
Rx unreliable datagram from port: MJ2KBOX:4000
Rx reliable datagram from port: MJ2KBOX:4000
Rx ordered datagram from port: MJ2KBOX:4000
Rx unreliable datagram from port: MJ2KBOX:4000
Rx sequenced datagram from port: MJ2KBOX:4000
Rx reliable datagram from port: MJ2KBOX:4000
Rx unreliable datagram from port: MJ2KBOX:4000
Rx ordered datagram from port: MJ2KBOX:4000
Rx reliable datagram from port: MJ2KBOX:4000
Rx unreliable datagram from port: MJ2KBOX:4000
Rx sequenced datagram from port: MJ2KBOX:4000
***** Stack shut down & freed
Rgds,
Martin
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|