'Author: Gerard 05-27-03 04:38 ' an example how to bind a port to an IP: $OPTIMIZE ON $APPTYPE GUI $TYPECHECK ON CONST AF_INET = 2 CONST SOCK_STREAM = 1 CONST IPPROTO_TCP = 6 CONST INADDR_LOCALHOST = &H7F000001 '127.0.0.1 DECLARE FUNCTION BindAddr LIB "wsock32.dll" ALIAS "bind" (hsocket AS LONG, sockaddr AS LONG, _ saSize AS LONG) AS LONG DECLARE FUNCTION htonl LIB "wsock32.dll" ALIAS "htonl" (hbo AS LONG) AS LONG DECLARE FUNCTION htons LIB "wsock32.dll" ALIAS "htons" (hbo AS WORD) AS WORD DECLARE FUNCTION inet_addr LIB "wsock32.dll" ALIAS "inet_addr" (dottedAdr AS STRING) AS LONG DECLARE FUNCTION listen LIB "wsock32.dll" ALIAS "listen" (hsocket AS LONG, backlog AS LONG) AS LONG DECLARE FUNCTION socket LIB "wsock32.dll" ALIAS "socket" (af AS LONG, stype AS LONG, protocol _ AS LONG) AS LONG TYPE InetBindStruc SinFam AS SHORT SinPrt AS SHORT SinAddr AS LONG SinZero1 AS LONG SinZero2 AS LONG END TYPE DIM Sock AS INTEGER DIM InetBindStr AS InetBindStruc DIM Mem As QMEMORYSTREAM DIM Rtn AS INTEGER Sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) ' 16 bytes structure InetBindStr.SinFam = AF_INET 'SIN_FAM InetBindStr.SinPrt = htons(12345) 'SIN_PORT Oops, port 12345 ? InetBindStr.SinAddr = htonl(INADDR_LOCALHOST) 'SIN_ADDRESS Mem.writeUDT(InetBindStr) Rtn = BindAddr(Sock, mem.pointer, 16) 'Bind port to IP Rtn = listen(Sock,1) 'Max_pending is 1 'No error checks done! CREATE Dummy AS QFORM Caption = "Socket Bind Test" Width = 250 Height = 150 Center CREATE LABEL AS QLABEL Width = 150 Top = 40 Left = 5 Caption = "This Example binds port: 12345 to IP: 127.0.0.1" END CREATE END CREATE Dummy.Showmodal