Author |
Topic: UDP support (Read 395 times) |
|
movr0r0
New Member
member is offline


Posts: 6
|
 |
Re: UDP support
« Reply #2 on: Nov 3rd, 2017, 12:16pm » |
|
Hi Richard,
Many thanks for your help, this is very useful;
However I am also looking to be able to use UDP listening sockets, hence, basically, my idea of, possibly, extend the SOCKLIB library -- and to stay as clean as possible with general BB4W and libraries organization. Any pros and/or cons?
Phil
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline


Posts: 803
|
 |
Re: UDP support
« Reply #3 on: Nov 3rd, 2017, 4:51pm » |
|
on Nov 3rd, 2017, 12:16pm, movr0r0 wrote: I've certainly got no objection to extending SOCKLIB to include UDP support. In fact the library is overdue for some attention, because it's one of the earliest to have been created and still contains 'legacy' code that is no longer required.
However I would want to be careful to keep the (much newer) BBCSDL version of socklib compatible with any changes to the BB4W version, which would mean taking into account how SDL_net implements UDP when designing the interface(s).
If you would like to do some preliminary work on extending the library, or even submit a new version for consideration, of course that's fine with me.
Richard.
|
|
Logged
|
|
|
|
movr0r0
New Member
member is offline


Posts: 6
|
 |
Re: UDP support
« Reply #4 on: Nov 29th, 2017, 4:48pm » |
|
Hi Richard, sorry for this slow update;
So I have amended BB4W SOCKLIB library with a few simple things, mostly UDP client/server additions, as well as a few things concerning TCP -- taking care however to keep it fully backwards compatible with the stock version (and to use look-alike naming for added functions .
Basically, additions are: REM FN_tcplistenM(host$,port$,backlog) Create a TCP/IP listening socket (with backlog, i.e. allows multiple connections requests) REM FN_checkconnectionM(socket) Check for a connection request and actually connects client (and leave listening socket open for more connections) REM FN_udpsocketS(host$,port$) Create a UDP/IP service socket (explicit bind, server application) REM FN_udpsocketC(host$,port$) Create a UDP/IP service socket (implicit bind, client application) REM FN_readsocketfrom(skt,buf,len,sockaddrbuf,sockaddrbuflen) Read max 'len' bytes to addr 'buf' from 'skt', and get peer's details REM FN_writesocketto(skt,buf,len,sockaddrbuf,sockaddrbuflen) Write max 'len' bytes at addr 'buf' to 'skt', specifying peer
I am not sure if you want me to send you the source code, or how to submit this new version. Let me know.
Ah, by the way, is there a better (shorter) way to get the base address of a structure than actually getting the address of its very first member?
|
|
Logged
|
|
|
|
Richard Russell
Administrator
member is offline


Posts: 803
|
 |
Re: UDP support
« Reply #5 on: Nov 29th, 2017, 6:47pm » |
|
on Nov 29th, 2017, 4:48pm, movr0r0 wrote:| I am not sure if you want me to send you the source code |
|
Please do. As I mentioned before, SOCKLIB is one of the oldest libraries and contains 'obsolete' code so will need some attention before a new version could be released. I also want to keep the BBCSDL version of SOCKLIB 'in phase' with the BB4W version, so that implies the addition of compatible UDP functions to the former.
Quote:| is there a better (shorter) way to get the base address of a structure than actually getting the address of its very first member? |
|
If I'm understanding the question, is there some reason why you're not simply using struct{} ?
http://www.bbcbasic.co.uk/bbcwin/manual/bbcwin2.html#structapi
Richard.
|
|
Logged
|
|
|
|
movr0r0
New Member
member is offline


Posts: 6
|
 |
Re: UDP support
« Reply #6 on: Dec 4th, 2017, 1:28pm » |
|
Hello Richard.
no, there is no (admittable) reason why I haven't used struct{} 
I'll email you the amended SOCKLIB.BBC library in a few minutes.
Cheers, Phil.
|
|
Logged
|
|
|
|
|