Skip to content

Latest commit

 

History

History
69 lines (54 loc) · 1.68 KB

sample_226.md

File metadata and controls

69 lines (54 loc) · 1.68 KB

Home

Winsock: creating a socket that is bound to a specific service provider

Code:

#DEFINE SOCKET_ERROR    -1
#DEFINE INVALID_SOCKET  -1

* address family constants
#DEFINE AF_INET      2  && internetwork: UDP, TCP, etc.
#DEFINE AF_IPX       6  && IPX and SPX
#DEFINE AF_NETBIOS  17  && NetBios-style addresses

* socket type constants
#DEFINE SOCK_STREAM     1
#DEFINE SOCK_DGRAM      2
#DEFINE SOCK_RAW        3
#DEFINE SOCK_RDM        4
#DEFINE SOCK_SEQPACKET  5

* protocol constants
#DEFINE IPPROTO_IP      0
#DEFINE IPPROTO_TCP     6
#DEFINE IPPROTO_UDP    17
#DEFINE IPPROTO_RAW   255

DO decl

IF InitWinsock()
	LOCAL hSocket

	hSocket = socket (AF_INET, SOCK_STREAM, IPPROTO_TCP)
	? "New socket:", hSocket

	IF hSocket <> INVALID_SOCKET
		? "Closing the socket:",;
			Iif(closesocket(hSocket)=0, "Ok","Error")
	ENDIF

	= WSACleanup()
ENDIF
* End of Main

FUNCTION  InitWinsock()
* Initializing the Winsock service for the application
#DEFINE WSADATA_SIZE 398
#DEFINE WS_VERSION 0x0202
	LOCAL lcWSADATA, lnInitResult
	lcWSADATA = Repli(Chr(0), WSADATA_SIZE)
	lnInitResult = WSAStartup (WS_VERSION, @lcWSADATA)
RETURN  (lnInitResult = 0)

PROCEDURE  decl
	DECLARE INTEGER WSAStartup IN ws2_32 INTEGER wVerRq, STRING @lpWSAData
	DECLARE INTEGER WSACleanup IN ws2_32

	DECLARE INTEGER closesocket IN ws2_32 INTEGER s
	DECLARE INTEGER socket IN ws2_32;
		INTEGER af, INTEGER type, INTEGER protocol  

Listed functions:

WSACleanup
WSAStartup
closesocket
socket