// The following Code describes the usage of synchronous socket:
// The required lib may not be complete. Please refer to the SDK help to add it yourself
Esock. Lib
// The required header file may not be complete. Please refer to the SDK help to add it yourself
# Include <in_sock.h>
# Include <nifman. h>
# Include <es_sock.h>
# If defined _ wins __
_ Connection (kconnectip, "192.168.0.1"); // change the connection IP address to the IP address used for testing.
# Else
_ Forward (kconnectip, "10.0.0.172"); // move the cmwap Proxy Gateway
# Endif
Const int kconnectport = 80; // Port
Hbufc8 * socketgeturl (tdesc8 & geturl );
Void testsocket ()
{
_ Lit8 (ksenddata, "post http: // www.google.com.cn HTTP/1.1/R/n/R/N ");
Tbuf8 <128> senddata (ksenddata );
Hbufc8 * Body = socketgeturl (senddata );
If (Body)
{
// Process the data returned by the server
Delete body;
}
}
Hbufc8 * socketgeturl (tdesc8 & geturl)
{
Rnif inif;
Rsocket isocket;
Trequeststatus istatus = krequestpending;
Tbuf8 <512> writebuf (geturl );
Tbuf8 <64> recvbuf;
Hbufc8 * ibuffer = NULL;
Inif. open ();
{
Rsocketserv isocketserv;
User: leaveiferror (isocketserv. Connect ());
Tinetaddr iaddress;
If (iaddress. Input (kconnectip) = kerrnone)
{
User: leaveiferror (isocket. Open (isocketserv, kafinet, ksockstream, kprotocolinettcp ));
Iaddress. setport (kconnectport );
Istatus = krequestpending;
Isocket. Connect (iaddress, istatus );
User: waitforrequest (istatus );
If (istatus. INT () = kerrnone)
{
Istatus = krequestpending;
Isocket. Write (writebuf, istatus );
User: waitforrequest (istatus );
If (istatus. INT () = kerrnone)
{
Tsockxfrlength idummylength;
Tint recvsize = 0;
For (;;)
{
Istatus = krequestpending;
Isocket. recvoneormore (recvbuf, 0, istatus, idummylength );
User: waitforrequest (istatus );
If (istatus. INT () = kerrnone)
{
Recvsize + = recvbuf. Length ();
If (ibuffer = NULL)
Ibuffer = hbufc8: newl (recvsize );
Else
Ibuffer = ibuffer-> realloc (recvsize );
Ibuffer-> des (). append (recvbuf );
}
Else
{
Break;
}
}
}
}
Isocket. Close ();
}
Isocketserv. Close ();
}
Inif. Close ();
Return ibuffer;
}
This code is just a brief introduction to socket usage, without timeout processing. If you want to perform timeout processing, add it yourself.