const HTML_EDIT = 800
const MESSAGE_EDIT = 801
int datasocket=-1
int ncsStatus
int l,t,w,h
window win
openwindow win,0,0,600,300,@SIZE|@MINBOX|@MAXBOX,0,"Network Client Example",&handler
GetClientSize win,l,t,w,h
Control win,@EDIT,"",0,0,w,h/2,@CTEDITMULTI|@CTEDITRO|@HSCROLL|@VSCROLL,HTML_EDIT
Control win,@EDIT,"",0,h/2,w,h/2,@CTEDITMULTI|@CTEDITRO|@HSCROLL|@VSCROLL,MESSAGE_EDIT
'initialize the client server library
ncsStatus = NCSInit(1,0)
if ncsStatus<0
AppendEdit(win,MESSAGE_EDIT,"Error initializing Client Server library",TRUE)
AppendEdit(win,MESSAGE_EDIT,NCSGetErrorText(),TRUE)
else
'Attempt to connect to server
AppendEdit(win,MESSAGE_EDIT,"Client Server Library initialized",TRUE)
ncsStatus = NCSConnectToServer("www.ionicwind.com",80)
if ncsStatus < 0
AppendEdit(win,MESSAGE_EDIT,"Error connecting to server",TRUE)
AppendEdit(win,MESSAGE_EDIT,NCSGetErrorText(),TRUE)
else
'Register a message to be sent when data is read to be retrieved
datasocket = ncsStatus
AppendEdit(win,MESSAGE_EDIT,"Connected to server, Socket ="+str$(datasocket),TRUE)
ncsStatus=NCSOnDataMessage(win.hWnd, datasocket, 7000)
if ncsStatus < 0
AppendEdit(win,MESSAGE_EDIT,"NCSOnDataMessage error",TRUE)
AppendEdit(win,MESSAGE_EDIT,NCSGetErrorText(),TRUE)
endif
endif
endif
if datasocket > -1
'send server a command
AppendEdit(win,MESSAGE_EDIT,"Sending GET command",TRUE)
string toSend = "GET / HTTP/1.1\nHost:www.ionicwind.com\n\n"
NCSSendData(datasocket,toSend,len(toSend)+1)
endif
waituntil IsWindowClosed(win)
'cleanup
if datasocket > -1
NCSCloseSocket(datasocket)
endif
NCSFree()
end
istring buffer[10000]
sub handler
select @message
case @idcreate
centerwindow win
case @idclosewindow
closewindow win
case @idsize
GetClientSize win,l,t,w,h
SetSize win,0,0,w,h/2,HTML_EDIT
SetSize win,0,h/2,w,h/2,MESSAGE_EDIT
case 7000
'data from server
ncsStatus = NCSReadData(datasocket,buffer,9999,500)
if ncsStatus > 0
AppendEdit(win,MESSAGE_EDIT,"Received"+str$(ncsStatus)+" bytes",TRUE)
buffer[ncsStatus]=0
AppendEdit(win,HTML_EDIT,buffer,FALSE)
'Arm the data message for further data.
ncsStatus=NCSOnDataMessage(win.hWnd, datasocket, 7000)
elseif ncsStatus < 0
AppendEdit(win,MESSAGE_EDIT,"ERROR :" + str$(ncsStatus),TRUE)
endif
endselect
endsub
'subroutine to easily append text in an edit control.
CONST WM_GETTEXTLENGTH = 0xE
Sub AppendEdit(window win,int id,string text,int addNL)
int _textlen:_textlen =SendMessage(win, WM_GETTEXTLENGTH,0,0,id)
ControlCmd win, id, @EDSETSELECTION, _textlen, _textlen
if(addNL)
ControlCmd win, id, @EDREPLACESEL, text + "\n"
else
ControlCmd win, id, @EDREPLACESEL, text
endif
Endsub