BorlandTalk.com Forum Index BorlandTalk.com
Borland discussion newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

adding 'ordered', 'sequenced' and 'reliable' transmissions t
Goto page 1, 2  Next
 
Post new topic   Reply to topic    BorlandTalk.com Forum Index -> Delphi Internet Winsock
View previous topic :: View next topic  
Author Message
Paul Nicholls
Guest





PostPosted: Mon Nov 15, 2004 12:05 am    Post subject: adding 'ordered', 'sequenced' and 'reliable' transmissions t Reply with 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.

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





PostPosted: Mon Nov 15, 2004 6:13 am    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote



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





PostPosted: Mon Nov 15, 2004 10:24 pm    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote



"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 :-)

Quote:
Rgds,
Martin








Back to top
Martin James
Guest





PostPosted: Tue Nov 16, 2004 10:18 am    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote


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





PostPosted: Tue Nov 16, 2004 10:13 pm    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote

"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





PostPosted: Tue Nov 16, 2004 11:41 pm    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote


"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





PostPosted: Wed Nov 17, 2004 12:02 am    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote

"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





PostPosted: Wed Nov 17, 2004 1:13 am    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote




"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





PostPosted: Wed Nov 17, 2004 1:29 am    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote

"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





PostPosted: Wed Nov 17, 2004 9:59 am    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote

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





PostPosted: Wed Nov 17, 2004 10:56 pm    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote

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





PostPosted: Wed Nov 17, 2004 11:04 pm    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote

"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 Smile

I will take a look at it Smile
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





PostPosted: Wed Nov 17, 2004 11:29 pm    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote

"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 Smile
I will take a look at it Smile
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





PostPosted: Wed Nov 17, 2004 11:41 pm    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote

"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





PostPosted: Thu Nov 18, 2004 7:16 am    Post subject: Re: adding 'ordered', 'sequenced' and 'reliable' transmissio Reply with quote

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
Display posts from previous:   
Post new topic   Reply to topic    BorlandTalk.com Forum Index -> Delphi Internet Winsock All times are GMT
Goto page 1, 2  Next
Page 1 of 2

 
Jump to:  
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


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.