RingSockets 拡張機能

RingSockets 拡張機能の用法です。

TCP サーバ

用例 (TCP サーバのコード):

load "sockets.ring"

sock = socket(AF_INET,SOCK_STREAM,0)
bind(sock,"127.0.0.1",5050)
listen(sock,5)
ns = accept(sock)

send(ns,"Hello Client")
msg = recv(ns,1024)
? "Client Say >> " + msg
close(ns)
close(sock)
? "ソケットの接続を終了しました"

TCP クライアント

用例 (TCP クライアントのコード):

load "sockets.ring"

sock = socket(AF_INET,SOCK_STREAM)
connect(sock,"127.0.0.1",5050)

send(sock,"Hello Server")
msg = recv(sock,1024)
? "Server Say >> " + msg

close(sock)
? "ソケットの接続を終了しました"

関数

この拡張機能の関数一覧です。

socket(nAddressFamily, nConnectionType) -> SocketHandle
bind(pSocketHandle, cHost , nPort)
listen(pSocketHandle, nBacklog)
accept(pSocketHandle) -> pConnectionHandle
send(pConnectionHandle|pSocketHandle,cMessage)
sendto(pSocketHandle,cMessage)
recv(pConnectionHandle|pSocketHandle,nBuffer) -> cData
recvfrom(pSocketHandle, nBuffer) -> cData
connect(pSocketHandle, cHost , nPort) -> 成功時は <0> を返します
close(pSocketHandle|pConnectionHandle)
gethostbyname(cHostName) -> cIPAddress
gethostbyaddr(cIPAddress) -> aListOfHostInfo
gethostname() -> cHostName
getservbyname(cName) -> nPort
getservbyport(nPort) -> cName

用例:

load "sockets.ring"

host = gethostbyname("google.com")
? host
line()
? gethostbyaddr(host)
line()
? gethostname()
line()
? getservbyname("ftp")
line()
? getservbyport(21)

func line ? copy("=",30)

定数

アドレス系統:

AF_INET       #  IPV4 を使用します。
AF_INET6      #  IPV6 を使用します。

接続方法:

SOCK_STREAM   #  TCP プロトコルを使用します。
SOCK_DGRAM    #  UDP プロトコルを使用します。