Google

Socket::Constants

$B%=%1%C%HA`:n$N;XDj$N$?$a$NDj?t$rDj5A$7$?%b%8%e!<%k!%$3$N%b%8%e!<(B $B%k$r%$%s%/%k!<%I$9$l$P!$Dj?t(B(AF_INET$B$J$I(B)$B$rD>@\;2>H$G$-$^$9!%(B

BasicSocket

$B%=%1%C%H$rI=$9Cj>]%/%i%9!#6qBNE*$J%=%1%C%HA`:n$O%5%V%/%i%9$G(B $BDj5A$5$l$^$9!#(B $BNc$($P%$%s%?!<%M%C%H%I%a%$%s%9%H%j!<%`%=%1%C%H$N>l9g$O(B TCPSocket$B$rMQ$$$^$9!#(B

$B%9!<%Q!<%/%i%9(B:

IO

$B%a%=%C%I(B:

getsockname

$B%=%1%C%H$N>pJs$rgetsockname(2)$B$r;2>H$N$3$H!#(B

getsockopt(level, optname)

$B%=%1%C%H$N%*%W%7%g%s$rgetsockopt(2) $B$r;2>H$N$3$H!#

getpeername

$B@\B3$NAjpJs$rgetpeername(2)$B$r;2>H$N(B $B$3$H!#(B

recv(len[, flags])

$B%=%1%C%H$+$i%G!<%?$rlen$B$Oflags$B$K$D$$$F$O(Brecv(2)$B$r;2>H!%(Bflags$B$N(B $B%G%U%)%k%HCM$O(B0$B$G$9!%(Bflags$B$N;XDj$KI,MW$JDj?t$O(B Socket$B%/%i%9$GDj5A$5$l$F$$$^$9!%(B($BNc(B: Socket::SO_LINGER)

send(mesg, flags[, to])

$B%=%1%C%H$r2p$7$F%G!<%?$rAw$j$^$9!%(Bflags$B$K4X$7$F$O(B send(2)$B$r;2>H$7$F$/$@$5$$!%(Bconnect $B$7$F$$$J$$%=%1%C%H$KBP$7$F$OAw$j@h$G$"$k(Bto$B$r;XDj(B $B$9$kI,MW$,$"$j$^$9!%

setsockopt(level, optname, optval)

$B%=%1%C%H$N%*%W%7%g%s$r@_Dj$7$^$9!%(Bsetsockopt(2) $B$r;2>H$N$3$H!%(B

shutdown([how])

$B%=%1%C%H$N0J9_$N@\B3$r=*N;$5$;$^$9!%(Bhow$B$,(B0$B$G$"$k(B $B;~!$0J9_$Nhow$B$,(B2$B$N;~$K$O!$$=$l0J9_$NAw?.!$how$B$r>JN,$9$k$H(B2$B$r;XDj$7$?$3$H$K$J$j$^$9!%(B shutdown(2)$B$r;2>H!%(B


IPSocket

$B%$%s%?!<%M%C%H%I%a%$%s%=%1%C%H$N%/%i%9!%DL>o$N(B IO$B%/%i%9$N%5%V%/%i%9$HF1(B $BMM$NF~=PNO$,$G$-$^$9!%(B

$B%9!<%Q!<%/%i%9(B:

BasicSocket

$B%/%i%9%a%=%C%I(B:

getaddress(host)

$B%[%9%HL>$+$i%[%9%H$N%"%I%l%9$rJV$7$^$9!%%[%9%H$N%"%I%l%9$OJ8(B $B;zNs$O(Boctet decimal$B$NJ8;zNs(B($BNc(B:127.0.0.1)$B$G$9!%(B

$B%a%=%C%I(B:

addr

$B%=%1%C%H$N@\B3>pJs$rI=$9G[Ns$rJV$7$^$9!%G[Ns$N3FMWAG$OBh(B1$BMW(B $BAG$,J8;zNs(B "AF_INET"$B!$Bh(B2$BMWAG$,(Bport$BHV9f!$Bh(B3$BMWAG$,%[%9%H$rI=(B $B$9J8;zNs!$Bh(B4$BMWAG$,%[%9%H$N(BIP$B%"%I%l%9$rI=$9J8;zNs(B(octet decimal)$B$G$9!%(B

peeraddr

$B@\B3AjpJs$rI=$9G[Ns$rJV$7$^$9!%G[Ns$N3FMWAG$O(B addr$B%a%=%C%I$,JV$9G[Ns(B $B$HF1$8$G$9!%(B


TCPSocket

$B%$%s%?!<%M%C%H%I%a%$%s$N%9%H%j!<%`7?%=%1%C%H$N%/%i%9!%DL>o$N(B IO$B%/%i%9$N%5%V%/%i%9$HF1(B $BMM$NF~=PNO$,$G$-$^$9!%$3$N%/%i%9$K$h$C$F%=%1%C%H$rMQ$$$?%/%i(B $B%$%"%s%H$r4JC1$K5-=R$G$-$k$h$&$K$J$j$^$9!%%f!<%6$NF~NO$r$=$N(B $B$^$^%5!<%P$KE>Aw$9$k%W%m%0%i%`$O0J2<$N$h$&$K$J$j$^$9!%(B

require "socket"

port = if ARGV.size > 0 then ARGV.shift else 4444 end
print port, "\n"

s = TCPSocket.open("localhost", port)

while gets
  s.write($_)
  print(s.gets)
end
s.close

$B%9!<%Q!<%/%i%9(B:

IPSocket

$B%/%i%9%a%=%C%I(B:

open(host, service)
new(host, service)

host$B$G;XDj$7$?%[%9%H$N(Bservice$B$G;XDj$7$?%]!<%H$H@\B3$7$?%=%1%C(B $B%H$rJV$7$^$9!%(Bhost$B$O%[%9%HL>!$$^$?$O(Boctet decimal $B$K$h$k%$%s%?!<%M%C%H%"%I%l%9$r<($9J8;zNs!$(Bservice $B$O(B/etc/services($B$^$?$O(BNIS)$B$KEPO?$5$l$F$$$k%5!<(B $B%S%9L>$+%]!<%HHV9f$G$9!%(B

gethostbyname(host)

$B%[%9%HL>$^$?$O(BIP$B%"%I%l%9(B($B@0?t$^$?$O(B"127.0.0.1" $B$N$h$&$JJ8;zNs(B)$B$+$i%[%9%H$N>pJs$rJV$7$^$9!%%[%9%H>pJs$O!$%[(B $B%9%HL>!$%[%9%H$NJLL>$NG[Ns!$%[%9%H$N%"%I%l%9%?%$%W!$%[%9%H$N(B $B%"%I%l%9$r3FMWAG$H$9$kG[Ns$G$9!%%[%9%H$N%"%I%l%9$O(Boctet decimal$B$NJ8;zNs(B("127.0.0.1"$B$N$h$&$JJ8;zNs(B)$B$G$9!%(B

$B%a%=%C%I(B:

recvfrom(len[, flags])

recv$B$HF1MM$K%=%1%C%H$+$i%G!<%?$rIPSocket#addr$B;2>H(B)$B$N%Z%"$G$9!%0z?t$K$D(B $B$$$F$O(Brecv$B$HF1MM$G$9!%(B


TCPServer

TCP/IP$B%9%H%j!<%`7?@\B3$N%5!<%PB&$N%=%1%C%H$N%/%i%9!%$3$N%/%i(B $B%9$K$h$C$F4JC1$K%=%1%C%H$rMxMQ$7$?%5!<%P$N%W%m%0%i%_%s%0$,$G(B $B$-$^$9!%Nc$($P(Becho$B%5!<%P$O0J2<$N$h$&$K$J$j$^$9!%(B

require "socket"

gs = TCPServer.open(0)
socks = [gs]
addr = gs.addr
addr.shift
printf("server is on %d\n", addr.join(":"))

while TRUE
  nsock = select(socks)
  next if nsock == nil
  for s in nsock[0]
    if s == gs
      socks.push(s.accept)
      print(s, " is accepted\n")
    else
      if s.eof?
	print(s, " is gone\n")
	s.close
	socks.delete(s)
      else
	str = s.gets
	s.write(str)
      end
    end
  end
end

Thread$B$r;H$($P$b$C$HC;$/$J$j$^$9!%(B

require "socket"

gs = TCPServer.open(0)
addr = gs.addr
addr.shift
printf("server is on %d\n", addr.join(":"))

while TRUE
  ns = gs.accept
  print(ns, " is accepted\n")
  Thread.start do
    s =	ns			# save to dynamic variable
    while s.gets
      s.write($_)
    end
    print(s, " is gone\n")
    s.close
  end
end

$B%9!<%Q!<%/%i%9(B:

TCPSocket

$B%/%i%9%a%=%C%I(B:

new([host, ]service)
open([host, ]service)

$B?7$7$$%5!<%P!<@\B3$r%*!<%W%s$7$^$9!%(Bservice$B$O(B /etc/services($B$^$?$O(BNIS)$B$KEPO?$5$l$F$$$k%5!<%S(B $B%9L>$+%]!<%HHV9f$G;XDj$7$^$9!%(Bhost$B$r;XDj$7$?;~$O(B $B;XDj$7$?%[%9%H$+$i$N@\B3$@$1$rJN,;~$OA4$F$N%[(B $B%9%H$+$i$N@\B3MW5a$r

$B%a%=%C%I(B:

accept

$B%/%i%$%"%s%H$+$i$N@\B3MW5a$rTCPSocket$B$N%$%s%9%?%s%9$rJV$7$^$9!%(B


UDPSocket

UDP/IP$B%G!<%?%0%i%`7?%=%1%C%H$N%/%i%9!%(B

$B%9!<%Q!<%/%i%9(B:

IPSocket

$B%/%i%9%a%=%C%I(B:

open()
new()

$B?7$7$$(BUDP$B%=%1%C%H$rJV$7$^$9!%(B

$B%a%=%C%I(B:

bind(host, port)

$B%=%1%C%H$r(Bhost$B$N(Bport$B$K7k9g$7$^$9!%(B

connect(host, port)

$B%=%1%C%H$r(Bhost$B$N(Bport$B$K(Bconnect$B$7$^$9!%(B

recvfrom(len[, flags])

recv$B$HF1MM$K%=%1%C%H$+$i%G!<%?$rIPSocket#addr$B;2>H(B)$B$N%Z%"$G$9!%0z?t$K$D(B $B$$$F$O(Brecv$B$HF1MM$G$9!%(B

send(mesg, flags[, host, port])

$B%=%1%C%H$r2p$7$F%G!<%?$rAw$j$^$9!%(Bflags$B$K4X$7$F$O(B send(2)$B$r;2>H$7$F$/$@$5$$!%(Bconnect $B$7$F$$$J$$%=%1%C%H$KBP$7$F$OAw$j@h$r;XDj$9$k$?$a(Bhost $B$H(Bport$B$r;XDj$9$kI,MW$,$"$j$^$9!%


UNIXSocket

UNIX$B%I%a%$%s$N%9%H%j!<%`7?%=%1%C%H$N%/%i%9!%DL>o$N(B IO$B%/%i%9$N%5%V%/%i%9$HF1MM$N(B $BF~=PNO$,$G$-$^$9!%(B

$B%9!<%Q!<%/%i%9(B:

BasicSocket

$B%/%i%9%a%=%C%I(B:

open(path)
new(path)

path$B$G;XDj$7$?%Q%9L>$rMQ$$$F@\B3$7$?%=%1%C%H$rJV(B $B$7$^$9!%(B

$B%a%=%C%I(B:

addr

$B%=%1%C%H$N@\B3>pJs$rI=$9G[Ns$rJV$7$^$9!%G[Ns$N3FMWAG$OBh(B1$BMW(B $BAG$,J8;zNs(B "AF_UNIX"$B!$Bh(B2$BMWAG$,%Q%9$rI=$9J8;zNs$G$9!%(B

path

UNIX$B%=%1%C%H$N%Q%9$rJV$7$^$9!%(B

peeraddr

$B@\B3AjpJs$rI=$9G[Ns$rJV$7$^$9!%G[Ns$N3FMWAG$O(B addr$B%a%=%C%I$,JV$9G[Ns(B $B$HF1$8$G$9!%(B

recvfrom(len[, flags])

recv$B$HF1MM$K%=%1%C%H$+$i%G!<%?$r


UNIXServer

UNIX$B%9%H%j!<%`7?@\B3$N%5!<%PB&$N%=%1%C%H$N%/%i%9!%(B

$B%9!<%Q!<%/%i%9(B:

UNIXSocket

$B%a%=%C%I(B:

accept

$B%/%i%$%"%s%H$+$i$N@\B3MW5a$rUNIXSocket$B$N%$%s%9%?%s%9$rJV$7$^$9!%(B


Socket

$B%=%1%C%H$=$N$b$N$KBP$9$k%7%9%F%`%3!<%k%l%Y%k$N%"%/%;%9$rDs6!(B $B$9$k%/%i%9!%(BPerl$B$N%=%1%C%H$KBP$9$k%"%/%;%9$HF1%l%Y%k$N5!G=$r(B $BDs6!$7$F$^$9!%$3$N%/%i%9$G$O%=%1%C%H%"%I%l%9$O(Bpack$B$5$l$?J8;z(B $BNs$G;XDj$7$^$9!%(B

$B0lHLE*$J%=%1%C%H%W%m%0%i%_%s%0$O$h$j9b%l%Y%k$N(B TCPSocket$B%/%i%9$d(B TCPServer$B%/%i%9$rMQ$$(B $B$F9T$o$l$k$3$H$,B?$/!$$3$N%/%i%9$O$"$^$jMQ$$$i$l$^$;$s!%(B

$B%9!<%Q!<%/%i%9(B:

BasicSocket

$B%/%i%9%a%=%C%I(B:

open(domain, type, protocol)
new(domain, type, protocol)

$B?7$7$$%=%1%C%H$r@8@.$7$^$9!%(Bdomain$B!$(B type$B!$(Bprotocol$B$O%$%s%/%k!<%I%U%!%$%k$K(B $B$"$kDj?t$G;XDj$7$^$9!%$[$H$s$I$NDj?t$O(BSocket$B%/(B $B%i%9$G%/%i%9Dj?t$H$7$FDj5A$5$l$F$$$^$9!%(Bdomain$B$H(B type$B$K4X$7$F$O!$J8;zNs$G$b;XDj$G$-$^$9$,!$J8;zNs(B $B$G$9$Y$F$r5!G=$r;XDj$G$-$kJ]>Z$O$"$j$^$;$s!%(B

for_fd(fd)

$B%U%!%$%k%G%#%9%/%j%W%?(Bfd$B$KBP$9$k?7$7$$%=%1%C%H(B $B$r@8@.$7$^$9!%(B

pair(domain, type, protocol)
socketpair(domain, type, protocol)

$BAj8_$K7k9g$5$l$?%=%1%C%H$N%Z%"$r4^$`(B2$BMWAG$NG[Ns$rJV$7$^$9!%(B $B0z?t$N;XDj$O(BSocket.open$B$HF1$8$G$9!%(B

gethostbyname(host)

$B%[%9%HL>$^$?$O(BIP$B%"%I%l%9(B($B@0?t$^$?$O(B"127.0.0.1" $B$N$h$&$JJ8;zNs(B)$B$+$i%[%9%H$N>pJs$rJV$7$^$9!%%[%9%H>pJs$O!$%[(B $B%9%HL>!$%[%9%H$NJLL>$NG[Ns!$%[%9%H$N%"%I%l%9%?%$%W!$%[%9%H$N(B $B%"%I%l%9$r3FMWAG$H$9$kG[Ns$G$9!%%[%9%H$N%"%I%l%9$O(Bpack$B$5$l$?(B $BJ8;zNs$G!$(Bunpack("CCCC")$B$GJ,2r$G$-$^$9!%(B

gethostbyaddr(host)

sockaddr$B9=B$BN$r%Q%C%/$7$?J8;zNs$+$i%[%9%H>pJs$rJV$7$^$9!%(B $B%[%9%H>pJs$N9=B$$O(Bgethostbyname$B$HF1$8$G$9!%(B

getservbyname(service[, proto])

service, proto$B$KBP1~$9$k%]!<%HHV9f$rJV(B $B$7$^$9!%(Bproto$B$N>JN,CM$O(B"tcp"$B$G$9!%(B

$B%a%=%C%I(B:

accept

$B?7$7$$@\B3$raccept(2)$B$r;2>H!%(B

bind(addr)

$B%=%1%C%H$r(Baddr$B$K7k9g$7$^$9!%(Bbind(2) $B$HF1$8F/$-$r$7$^$9!%(Baddr$B$O(Bpack$B$5$l$?%=%1%C%H%"%I(B $B%l%99=B$BN$G$9!%(B

connect(addr)

connect(2)$B$HF1$8F/$-$r$7$^$9!%(Baddr$B$O(B pack$B$5$l$?%=%1%C%H%"%I%l%99=B$BN$G$9!%(B

listen(backlog)

listen(2)$B$HF1$8F/$-$r$7$^$9!%(B

recvfrom(len[, flags])

recv$B$HF1MM$K%=%1%C%H$+$i%G!<%?$r

$B%[%9%H;XDjJ8;zNs(B

AF_INET$B$J%=%1%C%H$K$*$$$F%[%9%H$r;XDj$9$kJ8;zNs$O0J2<$N$$$:(B $B$l$+$N7A<0$G;XDj$7$^$9!%(B

  • $B%[%9%HL>(B
  • octet decimal$B$K$h$k(BIP$B%"%I%l%9(B
  • $B6uJ8;zNs(B - INADDR_ANY$B$KAjEv(B
  • "<broadcast>" - INADDR_BROADCAST$B$KAjEv(B