#define FD_SET To PureBasic

Just starting out? Need help? Post your questions and find answers here.
j50501313
User
User
Posts: 20
Joined: Fri Oct 23, 2009 11:51 am

#define FD_SET To PureBasic

Post by j50501313 »

Hello, I'm j50501313 and I'm new to PureBasic. While I really enjoy what I see so far,
I stumbled across this piece of C code that I'd like to convert to PB.

Code: Select all

#define FD_CLR(fd, set) do { \
    u_int __i; \
    for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count ; __i++) { \
        if (((fd_set FAR *)(set))->fd_array[__i] == fd) { \
            while (__i < ((fd_set FAR *)(set))->fd_count-1) { \
                ((fd_set FAR *)(set))->fd_array[__i] = \
                    ((fd_set FAR *)(set))->fd_array[__i+1]; \
                __i++; \
            } \
            ((fd_set FAR *)(set))->fd_count--; \
            break; \
        } \
    } \
} while(0)

#define FD_SET(fd, set) do { \
    u_int __i; \
    for (__i = 0; __i < ((fd_set FAR *)(set))->fd_count; __i++) { \
        if (((fd_set FAR *)(set))->fd_array[__i] == (fd)) { \
            break; \
        } \
    } \
    if (__i == ((fd_set FAR *)(set))->fd_count) { \
        if (((fd_set FAR *)(set))->fd_count < FD_SETSIZE) { \
            ((fd_set FAR *)(set))->fd_array[__i] = (fd); \
            ((fd_set FAR *)(set))->fd_count++; \
        } \
    } \
} while(0)

#define FD_ZERO(set) (((fd_set FAR *)(set))->fd_count=0)

#define FD_ISSET(fd, set) __WSAFDIsSet((SOCKET)(fd), (fd_set FAR *)(set))
PureBasic To

Code: Select all

Macro FD_ZERO(SET)
SET\fd_count = #Null
EndMacro

Procedure.l WinSock()
While #True
  If WSAStartup_($101,@Wsa.WSADATA) = #Null
     Sock.l = SOCKET_(#AF_INET,#SOCK_STREAM,#IPPROTO_TCP)
     If Sock <> #SOCKET_ERROR
        Repeat
          Addr_Sock.SOCKADDR_IN
          ZeroMemory_(@Addr_Sock,SizeOf(SOCKADDR_IN))
          Addr_Sock\sin_family = #AF_INET
          Addr_Sock\sin_port   = htons_(5310)
          Addr_Sock\sin_addr   = inet_addr_("127.0.0.1")
          Sleep_(10)
        Until connect_(Sock,@Addr_Sock,SizeOf(SOCKADDR_IN)) <> #SOCKET_ERROR
        If send_(Sock,@"Test",4,#False) = 4
           i.l = #Null
           Repeat
             i = i + 1
             FdRead.FD_SET
             FD_ZERO(FdRead)
             FD_SET(Sock,FdRead)
             Debug select_(Sock,@FdRead,#Null,#Null,#Null)
             Sleep_(10)
           Until i => 17000
           closesocket_(Sock)
           WSACleanup_()
         Else
           closesocket_(Sock)
           WSACleanup_()
        EndIf
      Else
        WSACleanup_()
     EndIf
  EndIf
  Sleep_(1000)
Wend
EndProcedure
I wonder if someone could please help me out. Thank you in advance.
Last edited by j50501313 on Sun Nov 29, 2009 1:17 pm, edited 3 times in total.
User avatar
Rings
Moderator
Moderator
Posts: 1435
Joined: Sat Apr 26, 2003 1:11 am

Re: WinSock API To PB??????

Post by Rings »

???
visionary ???
???

please write full sentences with your problem.
SPAMINATOR NR.1
Fred
Administrator
Administrator
Posts: 18162
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: #define FD_SET To PureBasic !!

Post by Fred »

It's not a code convertor forum, please start the conversion and ask for help if you need some.
Post Reply