Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
$B%7%9%F%`%W%m%0%i%`!JBh(B6$B=5!K(B:
[go: Go Back, main page]

$B%7%9%F%`%W%m%0%i%`!JBh(B6$B=5!K(B: $B%M%C%H%o!<%/!&%W%m%0%i%_%s%0!?%/%i%$%"%s%HB&(B

                                       $BC^GHBg3X(B $B%7%9%F%`>pJs9)3X8&5f2J(B 
                                       $B%3%s%T%e!<%?%5%$%(%s%9@l96(B, $BEE;R!&>pJs9)3X7O(B
                                       $B?7>k(B $BLw(B
                                       <yas@is.tsukuba.ac.jp>

$B$3$N%Z!<%8$O!" http://www.coins.tsukuba.ac.jp/~syspro/2008/No6.html
$B$"$k$$$O!" http://www.coins.tsukuba.ac.jp/~syspro/2008/
http://www.coins.tsukuba.ac.jp/~yas/

$B:#F|$N=EMW$JOC(B

$BNcBj$N%W%m%0%i%`$NMxMQJ}K!(B

$B%W%m%0%i%`$N@hF,$K%U%!%$%kL>$,=q$$$F$"$k!#(Bcp $B%3%^%s%I$G%3%T!<$G$-$k!#$?(B $B$H$($P!"(B~yas/syspro/ipc/echo-client-fdopen.c $B$J$i% cp ~yas/syspro/ipc/echo-client-fdopen.c . [$B

Emacs Tips

Web $B%Z!<%8$K$"$k%W%m%0%i%`(B($B9THV9f$,$"$k$b$N(B)$B$O!"0lIt>JN,$5$l$F$$$k$N$G!"(B $B$=$N$^$^9THV9f$r:o=|$7$?$@$1$G$OF0:n$7$J$$$3$H$,$"$k!#9THV9f$r:o=|$9$k(B $B$J$i!"(BEmacs $B$N@55,I=8=$K$h$k(BM-x replace-regexp $B$,;H$($k!#(B

$B;z2<$2$,5$$KF~$i$J$$;~$K$O!"(BM-x indent-region $B$r;H$&$H$h$$!#(Bregion $B$r@_(B $BDj$9$k$K$O!"(BC-SPC (control + space) $B$G%^!<%/$r@_Dj$7$F!"%+!<%=%k$r0\F0(B $B$5$;$k!#%?%V!&%-!<$b;H$($k$,!"(B1$B9T$:$D$7$+$G$-$J$$!#(B

$B%+!<%=%k0\F0$K$O!"(BM-< $B$d(BM-> $B$b;H(B $B$($k!#(B

Java

tcp_connect() $B$NFbIt$d(B getaddrinfo() $B$N:Y$+$$;H$$J}$OHt$P$7$F$b$h$$!#(B

$BK\F|$N2]Bj$G$O!"(BJava$B8@8l$G%W%m%0%i%`$r:n@.$7$F$b$h$$!#$?$@$7!"MxMQ$7$F(B $B$b$h$$$N$O!"(BSocket, ServerSocket, DatagramSocket $BEy$N(B Socket API $B$K6a$$(B $B%l%Y%k$N(BAPI $B$rDs6!$9$k%/%i%9$N$_$G$"$k!#9b%l%Y%k$N%/%i%9!"$?$H$($P!"(B HttpURLConnection $B$rMQ$$$F$O$J$i$J$$!#(B

TCP/IP$B$N4pK\E*$J9M$(J}(B

$B%$%s%?!<%M%C%H>e$N%"%W%j%1!<%7%g%s$NB?$/$O!"(BTCP/IP$B$H$$$&;EAH$_$rMQ$$$F(B $BDL?.$r9T$C$F$$$k!#(B

$B%9%H%j!<%`(B

TCP/IP$B$O!"?.Mj@-$N$"$k!J(Breliable$B!KAPJ}8~$N%9%H%j!<%`E>Aw%5!<%S%9(B $B!J(Bstream transport service$B!K$rDs6!$9$kDL?.%W%m%H%3%k$G$"$k!J?^#1!K!#%9(B $B%H%j!<%`$O!"Aw%5!<%S%9$G$"$k!#(B

$B?^!)!!7k9g$,:n$i$l$kDL?.%W%j%_%F%#%V$G$N%a%C%;!<%8$NG[Aw(B

$B?^!)!!7k9g$,:n$i$l$kDL?.%W%j%_%F%#%V$G$N%a%C%;!<%8$NG[Aw(B

$B?^!)!!7k9g$,:n$i$l$J$$DL?.%W%j%_%F%#%V$G$N%a%C%;!<%8$NG[Aw(B

$B?^!)!!7k9g$,:n$i$l$J$$DL?.%W%j%_%F%#%V$G$N%a%C%;!<%8$NG[Aw(B

$B%G!<%?%0%i%`$O!"=qN1$a$G$O$J$$M9JX$K;w$F$$$k!#(B $B%G!<%?%0%i%`$O!"(B $B%Q%1%C%H(B $B$H8F$P$l$k$3$H$b$"$k!#(B($B%Q%1%C%H$H$$$&8@MU$O!"%G!<%?$NAw$jA0$,IU$1$i$?!#(B)

IP$B%"%I%l%9(B

IP$B$N%G!<%?%0%i%`$,G[C#$5$l$k$H$-$K;H$o$l$kHV9f$,!"(B IP$B%"%I%l%9(B $B$G$"$k!#(BIP$B%"%I%l%9$H$7$F$O!"(BIPv4 $B$G$O!"(B32$B%S%C%H$N@0?t$,(B $B;H$o$l$F$k!#(BIPv6 $B$G$O!"(B128 $B%S%C%H$N@0?t$,;H$o$l$k!#(B

IP$B%"%I%l%9$NI=5-(B(IPv4)

$BNc!'(B $B$3$l$O!"#1#0?J?t$G$$$/$D$K$J$k$+$r7W;;$7$?$$;~$K$O!"
  • 12 * 256 3 + 34 * 256 2 + 56 * 256 1 + 78 * 256 0
  • (((12 * 256)+34)*256+56)*256+78

    IP$B%"%I%l%9$NI=5-(B(IPv6)

    IPv6 $B$N(B IP $B%"%I%l%9$rI=5-$9$k>l9g!"(B 128 $B%S%C%H$r(B 8 $B%S%C%H$:$D$K6h@Z$j!"(B $B$=$l$>$l$r(B 16 $B?J?t$GI=5-$9$k!#(B $BNc!'(B

    $B%]!<%HHV9f(B

    TCP$B$GDL?.$r$9$k;~$K!"DL?.Aj$B%]!<%HHV9f(B(port number) $B$,I,MW$K$J$k!#%]!<%HHV9f$O!"F1$8%[%9%H$NCf$GDs6!$5$l$F$$$kMM!9$J%5!<%S%9$r(B $B6hJL$9$k$?$a$K;H$o$l$k!#(B $B%]!<%HHV9f$O!"(B16$B%S%C%H$N@0?t$G$"$j!"$h$/;H$o$l$k(B $B%"%W%j%1!<%7%g%s(B $B$G$O!"$"$i$+$8$a$I$NHV9f$r;H$&$+$,7h$a$i$l$F$$$k!#$3$l$r(B well-known$B%]!<%HHV9f(B(well-known port number) $B$H$$$&!#(BUnix $B$G$O!"(B1024 $BHV$h$j>.$5$$%]!<%HHV9f$r;H$&$K$O!"(B $BFC8"%f!<%6(B($B%9!<%Q!$BFC8"%]!<%HHV9f(B(privileged port number) $B$H8F$P$l$k!#(B

    $B1~MQAX(B

    TCP$BAX$N>e$K$O!"1~MQAX$,Dj5A$5$l$F$$$k!#$3$NAX$G$O!"(Bftp, ssh, Firefox, Thunderbird $B$J$I$N!"(BTCP/IP $B$rMxMQ$9$k%W%m%0%i%`$N4V$N2qOC$NJ}K!$,Dj(B $B5A$5$l$k!#(B

    TCP/IP$B$r;H$C$?DL?.$O!"$^$k$G%W%m%;%9F1;N$,EEOC$G2qOC$9$k$h$&(B $B$K?J$a$i$l$k!#IaDL$NEEOC$G$O!"F|K\8l$rOC$9?M$H1Q8l$rOC$9?M$O!"EEOC$G>p(B $BJs8r49$r9T$&$3$H$,$G$-$J$$!#F1MM$K!"F1$8(BTCP/IP$B$r;H$C$F$$$F$b!"2qOC$NJ}(B $BK!$,0c$&$H!"$^$C$?$/>pJs8r49$r9T$&$3$H$,$G$-$J$$!#$f$($K!"(BTCP/IP$B$N>e$K(B $B$5$i$K!">pJs8r49$N$?$a$K$5$^$6$^$J%W%m%H%3%k$,

    TCP/IP$B$N>e$K9=C[$5$l$F$$$k%W%m%H%3%k$NNc$r!"I=#1$K<($9!#(B

    $BI=#1!!(BTCP/IP$B$N>e$K9=C[$5$l$F$$$k%W%m%H%3%k$NNc(B

    TCP/IP$B$N>e$K9=C[$5$l$F$$$k%W%m%H%3%k$NNc(B
    $B%]!<%HHV9f(B $B%W%m%H%3%k$NL>A0(B $BL\E*(B
    21 FTP(File Transfer Protocol) $B%U%!%$%kE>Aw(B
    22 SSH (Secure Shell) $B0E9fDL?.O)$K$h$k%m%0%$%s(B
    23 Telnet $B1s3V%m%0%$%s(B(telnet)
    25 SMTP(Simple Mail Transfer Protocol) $BEE;R%a!<%k$NE>Aw(B
    79 finger finger name $B$N
    80 HTTP(HyperText Transfer Protocol) WWW$B$N%G!<%?E>Aw(B
    110 POP(Post Office Protocol) $BEE;R%a!<%k$N%"%/%;%9(B
    119 NNTP(Network News Transfer Protocol) $B%M%C%H%o!<%/!&%K%e!<%9$N5-;v$NE>Aw(B
    143 IMAP(Internet Message Access Protocol) $BEE;R%a!<%k$N%"%/%;%9(B
    513 login $B1s3V%m%0%$%s(B(rlogin)

    /etc/services $B$K!"B>$N%]!<%HHV9f$,7G:\$5$l$F$$$k!#(B

    $BJ*M}AX(B

    IP$B$N%G!<%?%0%i%`$rE>Aw$9$k$?$a$K$O!"$5$^$6$^$JJ*M}E*$JG^BN$,;H$o$l$k!#(B $BJ*M}G^BN$O!"(BIP$BAX$HF1MM$K%G!<%?%0%i%`E>Aw%5!<%S%9$rDs6!$9$k$b$N$,B?$$!#(B $B$?$@$7!"%"%I%l%9$H$7$F$O!"(BIP$B%"%I%l%9$G$O$J$/!"$=$l$>$l$NJ*M}AX$K(B $BFH<+$N$b$N$rMQ$$$k!#(B

    $B8=:_(BLAN$B$G$O!"%$!<%5%M%C%H$,$h$/;H$o$l$$$k!#%$!<%5%M%C%H$O!"F1<4(B $B%1!<%V%k!"$h$jBP@~(B(Twisted Pair Cable)$B!"$^$?$O!"8w%U%!%$%P(B $B$r;H$C$F%G!<%?%0%i%`$rE>Aw$9$k!#(B $BL5@~(BLAN (IEEE 802.11b/g/a) $B$b!"%G!<%?%0%i%`$rE>Aw$9$k!#(B

    IP$B$N%G!<%?%0%i%`$rE>Aw$9$k;~$K!"J*M}E*$J%G!<%?%0%i%`E>Aw%5!<%S%9$G$O$J(B $B$/!"B>$N%W%m%H%3%k$,;H$o$l$k$3$H$b$"$k!#(B $B%b%G%`$J$I$r;H$C$?%7%j%"%k2s@~$G$O!"(BPPP(Point to Point Protocol)$B$H$$$&%W%m%H%3%k$N>e$K!"(BIP$B%G!<%?%0%i%`$,N.$5$l$k!#(B

    IP$B>e$K9=C[$5$l$?(B UDP$B!J(BUser Datagram Protocol$B!K$b!"(BIP$B$H$[$H$s$IF1$85!G=(B $B$rDs6!$9$k!#(B

    $B%[%9%H$H%k!<%?(B

    $B%M%C%H%o!<%/$K@\B3$5$l$F$$$k7W;;5!$NCf$G!"%M%C%H%o!<%/$K#1%u=j$N=PF~$j(B $B8}!J%$%s%?%U%'!<%9!K$r;}$C$F$$$k$b$N$O!"%[%9%H$H8F$P$l$k!##2%u=j0J>e$N(B $B=PF~$j8}$r;}$C$F$$$k7W;;5!$O!"%k!<%?$H8F$P$l$k!#%k!<%?$O!"%M%C%H%o!<%/(B $B$H%M%C%H%o!<%/$r@\B3$9$k$?$a$N7W;;5!$G$"$k!#%k!<%?$O!"F~$C$F$-$?(BIP$B$N%Q(B $B%1%C%H$N(BIP$B%"%I%l%9$r8+$F!"$I$N%M%C%H%o!<%/$KAw$l$P$h$$$+$rH=CG$9$k!#(B

    $B?^#1$G!":8C<$H1&C<$K$"$j!"#4AXA4$F$=$m$C$F$$$kItJ,$,%[%9%H$G$"$k!#(B TCP/IP$B$NDL?.$O!"%[%9%H$H%[%9%H$N4V$G9T$o$l$k!#Cf1{$N!"#2AX$7$+$J$$ItJ,(B $B$O!"%k!<%?$G$"$k!#%k!<%?$N;E;v$O!"(BIP$BAX$K$*$$$F9T$o$l$k!#(B

    OSI 7$BAX;2>H%b%G%k(B

    TCP/IP $B$O!"(BOSI$B;2>H%b%G%k$h$j$b8E$$!#(BOSI$B;2>H%b%G%k$G$O!"%W%m%H%3%k!&%9(B $B%?%C%/$O(B 7$BAX$+$i$J$k$,!"(BTCP/IP$B$G$O(B 4 $BAX$7$+$J$$!#(B

    $BDL?.O)$N3+@_(B

    TCP/IP $B$G$O!"%W%m%;%9$H%W%m%;%9$,!"EEOC$G2qOC$r$9$k$h$&$KDL?.$,9T$o$l(B $B$k!#IaDL$NEEOC$G?M4VF1;N$,OC$r$9$k$K$O!"$^$:EEOCHV9f$r;XDj$7$F!"OCAj

    TCP/IP$B$K$*$$$F!"%W%m%;%94V$K7A@.$5$l$?%9%H%j!<%`DL?.O)$N$3$H$r!"7W;;5!(B $B4V$KD%$i$l$?J*M}E*$J2s@~$K;w$F$$$k$3$H$+$i!"2>A[E*2s@~(B(virtual circuit)$B$H$b8@$&!#(BTCP/IP $B$G$O!"2s@~$r@\B3$9$kCJ3,$G$O!"%/%i%$%"%s%H!&(B $B%W%m%;%9$H%5!<%P!&%W%m%;%9$OHsBP>N$G$"$k!#0lEY2>A[2s@~$,@\B3$5$l$?8e$O!"(B $BN>J}$N%W%m%;%9$O!"(BTCP/IP$B$N%l%Y%k$G$O!"$^$C$?$/BP>NE*$K$J$k!#(B

    TCP/IP$B$K$*$$$F%W%m%;%94V$K2>A[2s@~$r3+@_$9$k$K$O!"(BIP$B%"%I%l%9$H%]!<%HHV(B $B9f$,I,MW$G$"$k!#%]!<%HHV9f$O!"F1$8(BIP$B%"%I%l%9$r;}$D%[%9%H>e$GF0$$$F$$$k(B $B%W%m%;%9$r6hJL$9$k$?$a$K;H$o$l$k!#(B

    $B0J2<$K!"DL?.O)$,3+@_$5$l$k

    1. $B%5!<%P!&%W%m%;%9$,%]!<%HHV9f$r;XDj$7$F!"@\B3MW5a $B%/%i%$%"%s%H!&%W%m%;%9$,DL?.MQ%]!<%H$r:n$k!#$3$N%]!<%H$r!"%5!<%P!&(B $B%W%m%;%9$,F0$$$F$$$k%[%9%H$N#I#P%"%I%l%9$H!"%5!<%P!&%W%m%;%9$,:n$C$?@\(B $BB3MW5a $B@\B3MW5a$,

      $B$3$&$7$F0lEYDL?.O)$,3+@_$5$l$k$H!"%/%i%$%"%s%H$H%5!<%P$O!"$I$A$i$+$i$G(B $B$b%G!<%?$rAw$j;O$a$k$3$H$,$G$-$k!#(B

      $B?^#3!J#a!K!!(BTCP/IP$BDL?.O)$N3+@_!J#1!K(B

      $B?^#3!J#a!K!!(BTCP/IP$BDL?.O)$N3+@_!J#1!K(B

      $B?^#3!J#b!K!!(BTCP/IP$BDL?.O)$N3+@_!J#2!K(B

      $B?^#3!J#b!K!!(BTCP/IP$BDL?.O)$N3+@_!J#2!K(B

      $B?^#3!J#c!K!!(BTCP/IP$BDL?.O)$N3+@_!J#3!K(B

      $B?^#3!J#c!K!!(BTCP/IP$BDL?.O)$N3+@_!J#3!K(B

      TCP/IP$B$K$*$1$kDL?.O)3+@_$K$*$$$F!"%/%i%$%"%s%H$O!"%5!<%PB&$N@\B3MW5a

      $B%/%i%$%"%s%HB&$NDL?.MQ%]!<%H$N%]!<%HHV9f$O!"DL>o$O!"%*%Z%l!<%F%#%s%0!&(B $B%7%9%F%`$K$h$j<+F0E*$K3d$jEv$F$i$l$k!#%5!<%PB&$NDL?.MQ%]!<%H$N%]!<%HHV(B $B9f$b!"F1MM$G$"$k!#(B

      $B%/%i%$%"%s%H$H%5!<%P(B

      $B!!%W%m%;%9$O!"K\Mh!"$$$D$G$b<+M3$K%a%C%;!<%8$rAw?.$G$-!"(B $B$$$D$G$b<+M3$K!"%a%C%;!<%8$r

      $B?^!)(B(a)$B!!9=B$2=$5$l$F$$$J$$$b$N(B

      $B?^!)(B(a)$B!!9=B$2=$5$l$F$$$J$$$b$N(B

      $B?^!)(B(b)$B!!9=B$2=$5$l$?$b$N(B

      $B?^!)(B(b)$B!!9=B$2=$5$l$?$b$N(B

      $B!!%/%i%$%"%s%H!&%5!<%P!&%b%G%k$O!"%W%m%;%94VDL?.$r9=B$2=$7$?$b$N$G$"$j!"(B $B:G6a$NMQ8l$G$$$&$H!"%G%6%$%s!&%Q%?!<%s$N#1$D$G$"$k!#(B

      $B%W%m%0%i%_%s%0$NNr(B $B;K$NCf$G!V9=B$2=!W$H$$$&8@MU$O!"$^$:!"!V@)8f9=B$!W$KBP$7$F;H$o$l$?!#9=(B $BB$2=%W%m%0%i%_%s%0$H$O!"(Bgoto$BJ8$r!"$h$$(B goto $BJ8$H0-$$(B goto$BJ8$KJ,$1!"$h(B $B$$(B goto $BJ8$@$1$r;H$&$h$&$K$7$h$&$H$9$k$b$N$G$"$k!#=i4|$N%W%m%0%i%_%s%0(B $B$G$O!"%"%;%s%V%j8@8l$dIO

      $B!!%W%m%;%94VDL?.$r9=B$2=$9$k$H$$$&0UL#$G$N%/%i%$%"%s%H!&%5!<%P!&%b%G%k(B $B$G$O!"$^$:%W%m%;%9$r%/%i%$%"%s%H$H%5!<%P$N#2

      $B?^(B? $BDL?.$N%Q%?%s$+$i$_$?%/%i%$%

      $B?^(B? $BDL?.$N%Q%?%s$+$i$_$?%/%i%$%"%s%H$H%5!<%P$NDj5A(B

      $B%/%i%$%"%s%H$b%5!<%P$b!"B?$/$N>l9g!"FbIt$K#1$D%k!<%W$r;}$A!"
      $B%/%i%$%"%s%H(B
      $B@h$KMW5a$rAw$k!"8e$G7k2L$r $B%5!<%P(B
      $B@h$KMW5a$r

      $B%/%i%$%"%s%H!&%5!<%P!&%b%G%k$K4p$E$/%W%m%0%i%`$K$O

    2. $BAw?.$7$+$d$i$J$$(B
    3. $B $BAw?.$r#22s$7$F $B $BCm0U!'%/%i%$%"%s%H$H%5!<%P$O!"$$$m$$$m$J0UL#$G;H$o$l$k!#$3$l$i$N0UL#$O!"(B $BB?$/$N>l9g!"0lCW$7$F$$$k$,!"0lCW$7$F$$$J$$$3$H$b$"$k!#(B

      $B7k9g:n@.$K$*$1$k%/%i%$%"%s%H$H%5!<%P(B

      $B!!(BTCP/IP$B$G$O!"7k9g$r:n$k2aDx$G!"@Q6KE*$KF/$-3]$1$kJ}$r%/%i%$%"%s%H!"BT$C(B $B$F$$$kJ}$r%5!<%P$H8F$V!#7k9g$r:n$k$3$H$O!"EEOC$r$+$1$k
      $B%/%i%$%"%s%H(B
      $BEEOC$r3]$1$kJ}$KAjEv$9$k(B
      $B%5!<%P(B
      $BEEOC$rBT$C$F$$$kJ}(B

      $B%5!<%S%9$N

      $B%/%i%$%"%s%H(B(client)
      $B%5!<%S%9$r $B%5!<%P(B(server)
      $B%5!<%S%9(B(service)$B$rDs6!$9$kJ}(B

      $B?^(B? $B%5!<%S%9$N<x<u$K$h$k%/%i%$%

      $B?^(B? $B%5!<%S%9$N

      $B%5!<%S%9$rDs6!$9$kJ}$O!"#1$D$N%W%m%0%i%`!J%3%s%T%e!<%?!K$GJ#?t$NMxMQ

      $B%/%i%$%"%s%H(B
      $B0l?M$G;H$&$b$N(B
      $B%5!<%P(B
      $BJ#?t?M$G6&M-$9$k$b$N(B

      $B?^(B? $BJ#?t$N%/%i%$%

      $B?^(B? $BJ#?t$N%/%i%$%"%s%H$K$h$k%5!<%P$N6&M-(B

      $BG=F0E*!&

      $BDL?.$r3+;O$9$k%Q%?%s$G!"%3%s%T%e!<%?!"%W%m%0%i%`!"?M4V$O!"

      $BG=F0E*(B(active)
      $B$[$C$H$$$F$b<+J,$G%a%C%;!<%8$rH/?.$7;O$a$k(B
      $B $B2?$+8@$o$l$k$HEz$($k$,!"<+J,$G$O%a%C%;!<%8$rH/?.$7;O$a$k$3$H$O$J$$(B $B%/%i%$%"%s%H$H%5!<%P$+$i:n$i$l$?%7%9%F%`$O!"%/%i%$%"%s%H$,G=F0E*$K$J$j!"(B $B%5!<%P$O!"

      $B?^(B? $BG=F0E*$J%/%i%$%

      $B?^(B? $BG=F0E*$J%/%i%$%"%s%H$H

      $BNc!'#W#W#W%5!<%P$O!"#W#W#W%/%i%$%"%s%H$+$i2?$+MW5a$,Mh$J$$8B$j!"$:$C$H(B $BL[$C$F$$$k!#(B

      $B%3%s%T%e!<%?$r;H$&;~$K$O!"?M4V$,G=F0E*$K$J$j!"%3%s%T%e!<%?$,

      $B%F%l%S$r8+$F$$$k;~$K$O!"?M4V$,

      $B9V5A7A<0$N

      $BBg3X0J>e$G$O!"3X@8$O!"G=F0E*$K$J$k$3$H$,5a$a$i$l$F$$$k!#(B

      $B%/%i%$%"%s%H$H%5!<%P$NNc(B

      $B%W%m%0%i%`(B $BDL?.%Q%?%s(B $B%5!<%S%9 $B7k9g:n@.(B
      $B%U%!%$%k!&%5!<%P(B $B%5!<%P(B $B%5!<%P(B $B%5!<%P(B*
      DNS$BL>A0%5!<%P(B $B%5!<%P(B $B%5!<%P(B $B%5!<%P(B
      Web$B%5!<%P(B $B%5!<%P(B $B%5!<%P(B $B%5!<%P(B
      Web$B%V%i%&%6(B $B%i%$%"%s%H(B $B%/%i%$%"%s%H(B $B%/%i%$%"%s%H(B
      $B%a!<%k%j!<%@(B $B%/%i%$%"%s%H(B $B%/%i%$%"%s%H(B $B%/%i%$%"%s%H(B
      $B%a!<%kG[AwH/?.B&(B $B%/%i%$%"%s%H(B $B%/%i%$%"%s%H(B $B%/%i%$%"%s%H(B
      $B%a!<%kG[AwCe?.B&(B $B%5!<%P(B $B%5!<%P(B $B%5!<%P(B
      $BF02hA|Aw?.(B - $B%5!<%P(B $B%5!<%P(B*
      $BF02hA| - $B%/%i%$%"%s%H(B $B%/%i%$%"%s%H(B*
      * UDP $B$N$h$&$K7k9g$,:n$i$l$J$$DL?.%W%j%_%F%#%V$,;H$o$l$k$3$H$,$"$k!#(B

      $B%=%1%C%H(B

      UNIX $B%*%Z%l!<%F%#%s%0!&%7%9%F%`>e$GF0:n$9$k%W%m%0%i%`$,(BTCP/IP$B$N5!G=$r(B $B;H$&>l9g!"(BUNIX$B%*%Z%l!<%F%#%s%0!&%7%9%F%`$,Ds6!$9$k%=%1%C%H$H$$$&%$%s%?(B $B%U%'!<%9$rDL$8$FMxMQ$9$k$3$H$K$J$k!#%=%1%C%H$O!"(BTCP/IP $B$r$O$8$a$H$7$F!"(B XNS, OSI $B$J$I$5$^$6$^$JDL?.%W%m%H%3%k$r(B UNIX $B%*%Z%l!<%F%#%s%0!&%7%9%F(B $B%`>e$G;H$&$?$a$K@_7W$5$l$?$b$N$G$"$k!#(BTCP/IP $B$@$1$r9M$($k$H!"%=%1%C%H(B $B$N%$%s%?%U%'!<%9$O!"HK;($G$"$j!";H$$$K$/$/$J$C$F$$$k!#(B

      UNIX$B$G$O!"%=%1%C%H$r%I%a%$%s!J(BProtocol Family$B!K$H7?$G6hJL$9$k!#(B $B2<$NI=$O!"(Bsocket() $B%7%9%F%`!&%3!<%k$KM?$($k%I%a%$%s$H7?$G$"$k!#(B

      socket() $B%7%9%F%`%3!<%k$N0z?t$H%W%H%m%3%k(B
      $B%I%a%$%s(B $B7?(B option $B%W%m%H%3%k(B
      PF_INET SOCK_STREAM 0 TCP/IP
      PF_INET SOCK_DGRAM 0 UDP/IP
      PF_INET SOCK_RAW ? IP,ICMP$B$J$I(B
      PF_INET6 SOCK_STREAM 0 TCP/IP(IPv6)
      PF_INET6 SOCK_DGRAM 0 UDP/IP(IPv6)
      PF_UNIX SOCK_STREAM 0 $BF10l%[%9%HFb(B(Unix$B%I%a%$%s(B)$B$N%9%H%j!<%`(B
      PF_UNIX SOCK_DGRAM 0 $BF10l%[%9%HFb(B(Unix$B%I%a%$%s(B)$B$N%G!<%?%0%i%`(B
      PF_NS SOCK_STREAM ? Xerox Network Systems protocol $B$N%9%H%j!<%`(B(SPP)
      PF_NS SOCK_SEQPACKET ? Xerox Network Systems protocol $B$N=g=xIU$-%Q%1%C%H(B
      PF_NS SOCK_RDM ? Xerox Network Systems protocol $B$N?.Mj@-$N$"$k%G!<%?%0%i%`(B

      $B$3$l0J30$NAH$_9g$o$;!";H$($J$$!#$?$H$($P!"(BPF_INET$B$H(BSOCK_SEQPACKET $B$r(B socket $B%7%9%F%`!&%3!<%k$G;XDj$7$F$b!"$&$^$/$$$+$J$$!#(B

      $B%=%1%C%H(BAPI$B$N
      $BL>A0(B $B@bL@(B
      socket() $BDL?.%W%m%H%3%k$KBP1~$7$?%=%1%C%H!&%*%V%8%'%/%H$r:n@.$9$k(B
      connect() $B7k9g(B(conection)$B$r3NN)$5$;$k!#%5!<%P$N%"%I%l%9$r8GDj$9$k!#(B
      listen() $B%5!<%PB&$G@\B3MW5a$NBT$A
      accept() $B%5!<%PB&$G@\B3$5$l$?%=%1%C%H$rF@$k!#(B
      bind() $B%=%1%C%H$K%"%I%l%9(B($BL>A0(B)$B$rIU$1$k!#(B
      getpeername() $BDL?.AjA0(B)$B$rF@$k!#(B
      getsockname() $B<+J,$N%"%I%l%9(B($BL>A0(B)$B$rF@$k!#(B
      send(),sendto(),sendmsg() $B%a%C%;!<%8$rAw?.$9$k!#(B
      recv(),recvfrom(),recvmsg() $B%a%C%;!<%8$r
      shutdown() $BAPJ}8~$N7k9g$rItJ,E*$K@ZCG$9$k!#(B
      getsockopt() $B%*%W%7%g%s$N8=:_$NCM$r
      setsockopt() $B%*%W%7%g%s$r@_Dj$9$k!#(B
      select(), poll() $BJ#?t$NF~=PNO(B($BDL?.$r4^$`(B)$B$rB?=E2=$9$k!#(B
      write() $B%a%C%;!<%8$rAw?.$9$k!#%U%!%$%k$H6&DL!#(B
      read() $B%a%C%;!<%8$r
      close() $B%U%!%$%k5-=R;R(B($B%U%!%$%k%G%#%9%/%j%W%?(B)$B$rJD$8$k!#B>$K;2>H$7$F$$$k%U%!%$%k5-=R;R$,(B $B$J$1$l$P!"%=%1%C%H!&%*%V%8%'%/%H$r:o=|$9$k!#%U%!%$%k$H6&DL!#(B

      DNS(Domain Name System)

      TCP/IP$B$GDL?.$9$k;~$K$O!"DL?.Aj

      $B?M4V$K$H$C$F$o$+$j$d$9$$5-9f!JJ8;zNs!K$r;H$C$?%3%s%T%e!<%?$NL>A0$+$i(B IP$B%"%I%l%9$KJQ49$9$k%5!<%S%9$,$"$l$PJXMx$G$"$k!#$3$N%5!<%S%9$r!"(B $BL>A0%5!<%S%9(B(name service)$B!"(B $B$H$$$&!#(B $BL>A0%5!<%S%9$rDs6!$9$k%W%m%0%i%`!J%W%m%;%9!K$r!"L>A0%5!<%P$H$$$&!#(B

      $BL>A0$+$iL>A0$r;X$7$F$$$kHV9f$KJQ49$9$k$3$H$r(B $BL>A02r7h(B(name resolution) $B$H$$$&!#(B

      $B%$%s%?!<%M%C%H$G;H$o$l$F$$$kL>A0%5!<%S%9$O!"(B DNS(Domain Name System) $B$H8F$P$l$k!#(B DNS $B$G$O!"KDBg$J?t$N%[%9%HL>$r4^$`L>A06u4V$r3,AXE*$K%I%a%$%s!JNN0h!K$K(B $BJ,3d$7$F4IM}$F$$$k!#(B $B$3$N6u4V$N9=B$$O!"LZ9=B$$HF1$8$b$N$G$$$k!#(B

      TCP/IP $B$NHFMQ%/%i%$%"%s%H!&%W%m%0%i%`$H$7$F$N(B telnet $B%3%^%s%I(B

      telnet $B%3%^%s%I$N;H$$J}(B

      telnet $B%3%^%s%I$O!"DL>o!"% telnet host1 [$B $B$3$l$O!"JN,7A$G$"$k!#(B
      % telnet host1 telnet [$B
      
      $B$3$3$G!"Bh#20z?t$N(B "telnet" $B$H$$$&J8;zNs$O!"(BTCP/IP $B$N%]!<%HHV9f$r<($9(B $B5-9f$G$"$k!#$3$N5-9f$O!"(B/etc/services $B$H$$$&%U%!%$%k$K telnet 23/tcp

      telnet $B%3%^%s%I$O!"(B/etc/services $B%U%!%$%k$r8!:w$7!"M?$($i$l$?5-9f$+$i(B $B%]!<%HHV9f!J$3$NNc$G$O(B23$B!K$rF@$k!#$^$?!"(Bhost1 $B$N(B IP $B%"%I%l%9$r!"(B /etc/hosts $B$d(B DNS $B$+$iF@$k!#(Btelnet $B%3%^%s%I$O!"$3$N(B IP $B%"%I%l%9$H%]!<(B $B%HHV9f$N#2$D$r;H$C$F!"(BTCP/IP $B$NDL?.O)$r3+@_$9$k!#!JCm0U!'(BNIS$B$,F0$$$F$$(B $B$k>l9g$K$O!"(B/etc/services $B$d(B /etc/hosts $B$NBe$o$j$K!"(BNIS$B$N%G!<%?%Y!<%9(B $B!J%^%C%W!K$,8!:w$5$l$k!#!K(B

      telnet $B%3%^%s%I$G$O!"$B?t;z$GBG$A9~$`(B $B$3$H$b$G$-$k(B($B0J2<$N(BIP$B%"%I%l%9$O!"(BIPv4$B$N>l9g(B)$B!#(B

      % telnet 12.34.56.78 23 [$B
      

      telnet $B%3%^%s%I$N;H$$J}(B(^])

      ^] $B$rBG$D$H!"%m!<%+%k$N(B telnet $B%3%^%s%I$r@)8f$9$k$3$H$,$G$-$k!#(B $B$3$3$G!"(Bquit $B$J$I$N%3%^%s%I$,;H$($k!#(B
      % telnet localhost echo [$B
      Trying 127.0.0.1...
      Connected to localhost.
      Escape character is '^]'.
      hello[$B
      hello
      exit[$B
      exit
      quit[$B
      quit
      aaa[$B
      aaa
      ^]
      telnet> quit[$B
      Connection closed.
      % []
      
      $BCm0U!'%;%-%e%j%F%#>e$NM}M3$+$i!"(Becho $B$J$I$N!"%7%9%F%`%W%m%0%i%`$N9V5A(B $B$/$i$$$G$7$+Lr$KN)$?$J$$$h$&$J%5!<%S%9$rDd;_$9$k$3$H$,!":G6a$G$O0lHLE*(B $B$G$"$k!#(B

      echo$B%5!<%S%9$N%/%i%$%"%s%H(B

      TCP/IP $B$N%]!<%HHV9f(B 7 $B$G$O!"Aw$i$l$F$-$?J8;z$r$=$N$^$^JV$9%5!<%S%9$rDs(B $B6!$7$F$$$k!#(B

      $B0J2<$O!"(Btelnet $B$r;H$C$F!"(Bazalea20.coins.tsukuba.ac.jp $B>e$GF0:n$7$F$$$k(B echo $B%5!<%P$rMxMQ$7$F$$$k(B(azalea20 $B>e$N%5!<%S%9$O!">pJs3XN`Fb$N%3%s%T%e!<(B $B%?$+$i$7$+$D$J$,$i$J$$$h$&$J@_Dj$r$7$F$$$k(B)$B!#(B

      % egrep echo /etc/services[$B
      echo              4/ddp    #AppleTalk Echo Protocol
      echo              7/udp     # Echo
      echo              7/tcp     # Echo
      at-echo         204/udp     # AppleTalk Echo                      
      at-echo         204/tcp     # AppleTalk Echo                      
      #                          Jeff Busma <busma@echogent.com>
      #                          Nedelcho Stanev <decho@csoft.bg>
      #                          Nedelcho Stanev <decho@iname.com>
      lsp-ping        3503/udp    # MPLS LSP-echo Port
      lsp-ping        3503/tcp    # MPLS LSP-echo Port
      echonet         3610/udp    # ECHONET
      echonet         3610/tcp    # ECHONET
      % telnet azalea20.coins.tsukuba.ac.jp 7[$B
      Trying 130.158.86.40...
      Connected to azalea20.coins.tsukuba.ac.jp.
      Escape character is '^]'.
      hello[$B
      hello
      exit[$B
      exit
      quit[$B
      quit
      ^]
      telnet> quit[$B
      Connection closed.
      % 
      

      echo-client-fdopen.c

      $B0J2<$N%W%m%0%i%`$O!"(Becho $B%5!<%S%9$rMxMQ$9$k%/%i%$%"%s%H$G$"$k!#% cp ~yas/syspro/ipc/echo-client-fdopen.c . [$B % make echo-client-fdopen [$B cc echo-client-fdopen.c -o echo-client-fdopen % ./echo-client-fdopen [$B Usage: ./echo-client-fdopen host port % ./echo-client-fdopen azalea20.coins.tsukuba.ac.jp 7 [$B ==> hello[$B sending: [hello ] received: [hello ] ==> exit[$B sending: [exit ] received: [exit ] ==> quit[$B sending: [quit ] received: [quit ] ==> ^D % [] $B$3$N%W%m%0%i%`$O!"%3%^%s%I%i%$%s$+$i#2$D0J>e$N0z?t$r$H$k!#Bh#10z?t$G;X(B $BDj$5$l$?%[%9%H>e$N!"Bh#20z?t$G;XDj$5$l$?%]!<%H$GF0:n$7$F$$$k%5!<%P$K@\(B $BB3$9$k!#$=$7$F!"%-!<%\!<%I$+$i#19TC10L$GF~NO$7!"$=$N%5!<%P$XAw$k!#(Becho $B%5!<%S%9$N%5!<%P$O!"F1$8J8;zNs$rAw$jJV$7$FMh$k!#$3$N%W%m%0%i%`$O!"%5!<(B $B%P$+$iAw$jJV$5$l$F$-$?J8;zNs$r

      TCP/IP$B$N%/%i%$%"%s%HB&$N%W%m%0%i%`$GBg;v$JI8=`$N%7%9%F%`%3!<%k$H%i%$%V(B $B%i%j4X?t$O!"

    4. socket()
    5. connect()
    6. (getaddrinfo())
    7. htons() $B$=$NB>$K!"(Btcp_connect() $B$,=P$F$/$k!#$3$l$O!"?7>k$,9V5AMQ$K:n$C$?$b$N$G(B $B$"$k!#1i=,2]Bj$r2r$/;~$K!"$3$l$r;H$C$F$b$h$$!#(B

      echo-client-fdopen.c $B$N(Bmain()

         1:	/*
         2:	        echo-client-fdopen.c -- $BJ8;zNs$rAw
      
      
      main() $B4X?t$O!"%3%^%s%I%i%$%s$N0z?t$rD4$Y$F!"(Becho_client() $B$rFI$s$G$$(B
      $B$k!#(Bstrtol() $B$G!"0z?t$GJ8;zNs$H$7$FM?$($i$l$??t$r!"(Bint $B$KJQ49$7$F$$$k!#(B
      
      

      echo_client()

        34:	#define BUFFERSIZE      1024
        35:	
        36:	int
        37:	echo_client( char *server, int portno )
        38:	{
        39:	    int sock ;
        40:	    char sbuf[BUFFERSIZE];
        41:	    char rbuf[BUFFERSIZE];
        42:	    FILE *in, *out ;
        43:	
        44:	        sock = tcp_connect( server, portno );
        45:	        if( sock<0 )
        46:	            exit( -1 );
        47:	        if( fdopen_sock(sock,&in,&out) < 0 )
        48:	        {
        49:	            fprintf(stderr,"fdooen()\n");
        50:	            exit( 1 );
        51:	        }
        52:	        printf("==> "); fflush(stdout);
        53:	        while( fgets(sbuf,BUFFERSIZE,stdin) )
        54:	        {
        55:	            fprintf(stdout,"sending: [%s]\n",sbuf );
        56:	            fprintf(out,"%s",sbuf );
        57:	            fgets( rbuf,BUFFERSIZE,in );
        58:	            printf("received: [%s]\n",rbuf );   
        59:	            printf("==> "); fflush(stdout);
        60:	        }
        61:	        printf("\n");
        62:	        fclose( in );
        63:	        fclose( out );
        64:	}
        65:	
      
      
      echo_client() $B$G$O!"(Btcp_connect() $B$H$$$&4X?t$r8F$S=P$7$F$$$k!#$3$N7k2L!"(B $B%5!<%P$H$N4V$K(B TCP/IP$BDL?.O)$N3+@_$5$l!"DL?.2DG=$J%U%!%$%k5-=R;R(B ($B%U%!%$%k%G%#%9%/%j%W%?(B) $B$,JV$5(B $B$l$k!#$3$N%U%!%$%k5-=R;R$O!"I8=`F~=PNO(B(0,1,2)$B$d(B open() $B%7%9%F%`!&%3!<(B $B%k$N7k2L$HF1$8$b$N$G!"(B write() $B%7%9%F%`%3!<%k$d(B read() $B%7%9%F%`%3!<%k$NBh0l0z?t$H$7(B $B$F;H$&$3$H$,$G$-$k!#$D$^$j!"(Bwrite() $B%7%9%F%`%3!<%k$r;H$&$H!"%M%C%H%o!<(B $B%/$KBP$7$F%G!<%?$rAw$j=P$9$3$H$,$G$-!"(Bread() $B%7%9%F%`%3!<%k$r;H$&$H%M%C(B $B%H%o!<%/$+$i%G!<%?$r

      $B$3$N%W%m%0%i%`$G$O!"(Bfdopen_sock() ($B8e=R(B)$B$r;H$C$F!"DL?.2DG=$J%U%!%$%k5-(B $B=R;R(B com $B$+$i#2$D$N(B FILE * $B$r:n@.$7$F$$$k!##1$D$O!"F~NOMQ!"#1$D$O=PNO(B $BMQ$G$"$k!#$=$N7k2L!"(B $B9b?e=`F~=PNO%i%$%V%i%j(B $B$r;H$C$FDL?.$,9T$($k$h$&$K$J$C$F$$$k!#(Bfprintf() $B$G=PNOMQ$N(B FILE * $B$K=q(B $B$-9~$`$H!"%M%C%H%o!<%/$KBP$7$F%G!<%?$,Aw$j=P$5$l$k!#F~NOMQ$N(B FILE * $B$K(B fgets() $B$r9T$&$H!"%M%C%H%o!<%/$+$i%G!<%?$r

      TCP/IP $B$NDL?.$G$O!"9TC10L(B($B:G8e$K(B\n)$B$G%G!<%?$rAw$N%5!<%S%9$G$O!"#19TAw$C(B $B$FJ#?t9Tl9g$J$I(B)$B$b$"$k!#$=$N>l9g$O!"(Bfprintf() $B$d(B fgets() $B$G$O(B $B$J$/$F!"(Bfwrite() $B$d(B fread() $B$r;H$&I,MW$,$"$k!#(B

      tcp_connect()

      tcp_connect() $B$O!"(B$BDL?.O)$N3+(B $B@_(B$B$N;E;v$N$&$A!"%/%i%$%"%s%HB&$N;E;v$r$9$k4X?t$G$"$k!#(B $BMxMQJ}K!$5$($o$+$l$P!"$3$N4X?t$NFbMF$OHt$P$7$F$b$h$$!#(B
        66:	/* $B?7>k!"C^GHBg3X!?>pJs3XN`!?%7%9%F%`%W%m%0%i%`9V5AMQ(B */
        67:	int
        68:	tcp_connect( char *server, int portno )
        69:	{
        70:	    struct addrinfo hints, *ai;
        71:	    struct sockaddr_in addr ;   /* IPv4 */
        72:	    int s ;
        73:	    int err ;
        74:	
        75:	        if( (s = socket(PF_INET, SOCK_STREAM, 0)) < 0 )
        76:	        {
        77:	            perror("socket");
        78:	            return( -1 );
        79:	        }
        80:	        if( sockaddr_in_init( &addr, sizeof(addr), server, portno )<0 )
        81:	        {
        82:	            perror("sockaddr_in_init");
        83:	            return( -1 );
        84:	        }
        85:	        if( connect(s, (struct sockaddr *)&addr, sizeof(addr)) < 0 )
        86:	        {
        87:	            perror( server );
        88:	            close( s );
        89:	            return( -1 );
        90:	        }
        91:	        return( s );
        92:	}
        93:	
      
      
      $B$^$:!"%/%i%$%"(B $B%s%HB&$N%=%1%C%H$r!"(Bsocket() $B%7%9%F%`%3!<%k$G:n@.$7$F$$$k!#(B PF_INET $B$H(B SOCK_STREAM$B$NAH$_9g$o$;(B$B$J$N$G!"(B TCP $B$r;H$&$3$H$r0UL#$9$k!#(B

      socket() $B$N0z?t$G!"(BPF_INET $B$NJQ$j$K!"(BAF_INET $B$H=q$$$F$b$h$$!#$3$3$G$O!"(B Protocol $B$rA*$s$G$$$k$N$G!"(BPF_ $B$,@5$7$$$,!"

      $B%=%1%C%H$,:n@.$G$-$?$i!"(Bconnect() $B%7%9%F%`%3!<%k$G@\B3$9$k!#$=$NBh#20z(B $B?t$HBh#30z?t$G!"@\B3@h$N%"%I%l%9$r;XDj$7$J$1$l$P$J$i$J$$!#(B $B@\B3@h$K$O!"(Bsockaddr $B$r;H$&!#(B $B$3$N9=B$BN$K$O!"(BIP $B%"%I%l%9$H%]!<%HHV9f$,4^$^$l$F$$$k!#(B $B$3$N9=B$BN$r=i4|2=$9$k$a$?$K!"(Bsockaddr_in_init() $B$H$$$&(B $B4X?t$r8F$S=P$7$F$$$k!#(B

      sockaddr_in_init()

      sockaddr_in_init() $B$O!"(Bconnect() $B$d(B bind() $B$G;HMQ$9$k9=B$BN(B struct sockaddr_in $B$r@_Dj$9$k4X?t$G$"$k!#(B $BMxMQJ}K!$5$($o$+$l$P!"$3$N4X?t$NFbMF$OHt$P$7$F$b$h$$!#(B
        94:	int
        95:	sockaddr_in_init( struct sockaddr_in *addr, int addrlen,
        96:	                  char *hostname, int portno )
        97:	{
        98:	    struct addrinfo hints, *ai;
        99:	    int err ;
       100:	
       101:	        if( addrlen < sizeof(struct sockaddr_in) )
       102:	        {
       103:	            fprintf(stderr,"sockaddr_in, not enough space (%d) > (%d)\n",
       104:	                     addrlen, sizeof(struct sockaddr_in) );
       105:	            return( -1 );
       106:	        }
       107:	        memset( &hints, 0, sizeof(hints) );
       108:	        hints.ai_family   = AF_INET ; /* IPv4 */
       109:	        if( (err = getaddrinfo( hostname, NULL, &hints, &ai )) )
       110:	        {
       111:	            fprintf(stderr,"unknown host %s (%s)\n",hostname,
       112:	                    gai_strerror(err) );
       113:	            return( -1 );
       114:	        }
       115:	        if( ai->ai_addrlen > addrlen )
       116:	        {
       117:	            fprintf(stderr,"sockaddr too large (%d) > (%d)\n",
       118:	                    ai->ai_addrlen,sizeof(addr) );
       119:	            freeaddrinfo( ai );
       120:	            return( -1 );
       121:	        }
       122:	        memcpy( addr, ai->ai_addr, ai->ai_addrlen );
       123:	        addr->sin_port = htons( portno );
       124:	        freeaddrinfo( ai );
       125:	
       126:	        return( 0 );
       127:	}
       128:	
      
      

      IP $B%"%I%l%9$O!"J8;zNs$GM?$($i$l$?@\B3@h$N%5!<%P$N%[%9%HL>$+$i(B $BI8=`$N(B $B%i%$%V%i%j4X?t(B getaddrinfo() $B$r;H$C$FD4$Y$F$$$k!#(B getaddrinfo() $B$O!"%[%9%HL>$r(B IP $B%"%I%l%9$KJQ49$7!"$5$i$K!"(Bstruct sockaddr $B$N@hF,$KDj?t(B AF_INET $B$r@_Dj$7$F$$$k!#%]!<%HHV9f$O!"Bh#20z?t$,(B NULL $B$J$N$G!"(B0 $B$r;XDj$7$F$$$k!#(B ($B=>Mh$O!"(Bgetaddrinfo() $B$G$O$J$/(B gethostbyname() $B$,(B $B$h$/;H$o$l$F$$$?!#(Bgetaddrinfo() $B$O!"(BIPv6 $B$K$bBP1~$7$F$$$k!#(B)

      $B%]!<%HHV9f$O!"0z?t$GM?$($i$l$?$b$N$r$=$N$^$^;H$&!#$?$@$7!"%M%C%H%o!<%/!&(B $B%P%$%H%*!<%@!J%S%C%0%(%s%G%#%"%s!K$KJQ49$9$kI,MW$,$"$k!#(B $B%]!<%HHV9f$H$7$F!"@0?t(B(short)$B$G$O$J$/!"(B/etc/services $B%U%!%$%k$K4^$^$l(B $B$?J8;zNs$G;XDj$7$?$$$3$H$b$"$k!#$=$N>l9g$O!"(Bgetaddrinfo() $B4X?t$NBh#20z(B $B?t$KJ8;zNs$rEO$9!#(B

      getaddrinfo() $B$NCf$G(B malloc() $B$5$l$?%a%b%j$O!"(Bfree() $B$rD>@\8F$S=P$7$F(B $B2rJ|$9$k$N$G$O$J$/!"(Bfreeaddrinfo() $B$r8F$S=P$7$F2rJ|$9$k!#(B ($BD>@\(B free() $B$r8F$V$H!"(Bai_next $B$N@h$,2rJ|$5$l$J$$!#(B)

      $B%P%$%H%*!<%@(B

      $BJ#?t%P%$%H$N@0?t$r%a%b%j$KCV$/;~$K!"O"B3$7$?J#?tHVCO$N%a%b%j$r;H$&!#(B $B#1$D$NHVCO$K$O!"#1%P%$%H!J(B8$B%S%C%H!K$N%G!<%?$rJ];}$G$-$k!#(B $BJ#?t%P%$%H$N@0?t$r%a%b%j$KCV$/$H$-!"(B $B$I$&$$$&=gHV$GCV$/$+$G#2$D$NJ}K!$,$"$k!#(B
      $B%S%C%0%(%s%G%#%"%s!#HVCO$,>.$5$$J}$K>e0L%P%$%H$r$rCV$/!#(B
      $B%j%H%k%(%s%G%#%"%s!#HVCO$,>.$5$$J}$K2<0L%P%$%H$rCV$/!#(B
      $B>e0L%P%$%H$H$O!"?t$NBg>.Hf3S$N;~$K!":G$b8z$$$F$/$k%P%$%H(B(most significant byte)$B!#I=5-$7$?;~$K$O!":8B&$KMh$k!#(B

      $BNc!'(B0x12345678$B$NCV$-J}!#(B

      0x12345678 $B$,(B CPU $B$H%a%b%j$KCV$+$l$F$$$k!#(B

      $B?^!)(B $B%P%$%H!&%*!<%@(B

      $BCm0U!'#C#P#U$N%l%8%9%?$NCf$G$O!"%P%$%H!&%*!<%@$O4X78$J$$!#(B

      $B%P%$%H%*!<%@$rJQ49$9$k$K$O!" #include <netinet/in.h> unsigned long int htonl(unsigned long int hostlong ); unsigned short int htons(unsigned short int hostshort); unsigned long int ntohl(unsigned long int netlong ); unsigned short int ntohs(unsigned short int netshort );

      $B$3$3$G!"(Bn $B$O!"(Bnetwork$B!"(Bh $B$O!"%[%9%H!"(Bs $B$O(B short$B!"(Bl $B$O!"(Blong $B$r0UL#$9$k!#(B $B%M%C%H%o!<%/$NJQ$j$K!"%U%!%$%k$G$b$h$$!#%U%!%$%k$d%M%C%H%o!<%/$K=PNO$9(B $B$k;~$K$O!"(Bhtonl() $B$d(B htons() $B$GI8=`7O!J%S%C%0%(%s%G%#%"%s!K$KJQ49$9$k!#(B $BF~NO$N;~$O!"5U$K(B ntohl() $B$d(B ntohs() $B$G85$K$b$I$9!#(B

      $B%]!<%HHV9f$O!"(B16 $B%S%C%H$J$N$G!"%i%$%V%i%j4X?t(B htons() (host to network, short))$B$r;H$C$FJQ49$7$F$$$k!#(B

      IP $B%"%I%l%9$b%M%C%H%o!<%/!&%P%$%H%*!<%@$K$J$C$F$$$kI,MW$,$"$k!#$3$l$O(B getaddrinfo() $B4X?t$G!"(Bstruct addrinfo $B$N(B ai_addr $B$KJ]B8$=$l$?CJ3,$G4{$K(B $B$=$&$J$C$F$$$k!#(B

      fdopen_sock()

      fdopen_sock() $B$O!"(BTCP/IP $B$K$h$kDL?.$r!"(Bfprintf(), fgets(), fread() $BEy$G(B $B9T$($k$h$&$K$9$k4X?t$G$"$k!#(B $BMxMQJ}K!$5$($o$+$l$P!"$3$N4X?t$NFbMF$OHt$P$7$F$b$h$$!#(B
       129:	int
       130:	fdopen_sock( int sock, FILE **inp, FILE **outp )
       131:	{
       132:	    int sock2 ;
       133:	        if( (sock2=dup(sock)) < 0 )
       134:	        {
       135:	            return( -1 );
       136:	        }
       137:	        if( (*inp = fdopen( sock2, "r" )) == NULL )
       138:	        {
       139:	            close( sock2 );
       140:	            return( -1 );
       141:	        }
       142:	        if( (*outp = fdopen( sock, "w" )) == NULL )
       143:	        {
       144:	            fclose( *inp );
       145:	            *inp = 0 ;
       146:	            return( -1 );
       147:	        }
       148:	        setvbuf(*outp, (char *)NULL, _IOLBF, 0);
       149:	        return( 0 );
       150:	}
      
      fdopen_sock() $B$O!"(Bdup() $B$7$F%U%!%$%k5-=R;R$rA}$d$7!"(Bfdopen() $B$r8F$s$G(B $B$$$k!#(Bfdopen() $B$O!"4{$K(B open() $B$d(B pipe() $BEy$GF@$i$l$?%U%!%$%k5-=R;R$+$i(B $B9b?e=`F~=PNO%i%$%V%i%j(B $B$,;H$($k$h$&$K$9$k$?$a$N$b$N$G$"$k!#(B setvbuf() $B$G$O!"%P%C%U%!%j%s%0$r9T$o$;$J$$$h$&$K$7$F$$$k!#$3$l$K$h$j!"(B $B$?$H$($P(B fprintf() $B$r9T$&$H!"B(:B$K%M%C%H%o!<%/$KAw$j=P$5$l$k!#(B

      echo$B%5!<%S%9$N%/%i%$%"%s%H(B(Java$BHG(B)

      Java $B8@8l$G5-=R$7$?(B echo_client() $B$G$"$k!#(B
         1:	
         2:	/*
         3:	        EchoClient.java -- $BJ8;zNs$rAw
      
      $B$3$N%W%m%0%i%`$N4pK\E*$JItJ,$O!"(B
      echo_client()$B$HF1$8$G$"$k!#(B
      $B0J2<$K!"(BJava $B$N%a%=%C%IL>$H(B C $B$N4X?tL>$NBP1~$r<($9!#(B
      Java $B$N(B readLine() $B$G$O9TKv$N2~9T5-9f$,:o=|$5$l$F$$$k$N$G!"(B
      $B$=$l$rIU2C$7$FAw?.$7$F$$$k!#(B
      
      
      Java C
      new Socket tcp_connect()
      new BufferedReader(), new PrintStream() fdopen_sock()
      readLine() fgets()
      printf() fprintf()

      $BN}=,LdBj(B

      $BN}=,LdBj(B(601) $B%5!<%S%9L>$K$h$k%]!<%HHV9f(B

      $B>e$N(B echo-client-fdopen.c $B$G$O!"%]!<%HHV9f$r?t$G(B $BM?$($F$$$k!#$3$l$r!"%5!<%S%9L>$K$h$j%]!<%HHV9f$,;XDj$G$-$k$h$&$K=q$-49(B $B$($J$5$$!#(B

      $BN}=,LdBj(B(602) TCP/IP$B%/%i%$%"%s%H$N:n@.(B

      $Be:n$j$J$5$$!#!J0J2<$N9`L\$K$O!"(B $B3F%W%m%H%3%k$r@bL@$7$?%Z!<%8$X$N%j%s%/$,Kd$a9~$^$l$F$$$k!#!K(B

      • HTTP
      • NNTP
      • SMTP
      • $B$=$NB>!"$3$l$i$HF1DxEY$NJ#;($5$r;}$D%W%m%H%3%k(B
      $B$^$:!"(Btelnet $B$G!"$3$l$i$N%5!<%P$K@\B3$7$J$5$$!#$=$7$F!"$=$l$>$l$N%W%m(B $B%H%3%k$K=>$C$F!"MW5a$rBG$A9~$_!"$I$N$h$&$J7k2L$,JV$C$F$/$k$+$rD4$Y$J$5(B $B$$!#(B

      $B

      HTTP $B$G$O!"%X%C%@ItJ,$O%F%-%9%H$G$"$j!"(Bfprintf() $B$d(B fgets() $B$rMxMQ$7$F(B $BAw\$7$/$O!"(BHTTP $B$N%Z!<(B $B%8$r;2>H$7$J$5$$!#(B NNTP $B$d(B SMTP $B$O!"%F%-%9%H!&%Y!<%9$N%W%m%H%3%k$J$N$G!"A4$F$NDL?.$K(B fprintf() $B$d(B fgets() $B$r;H$C$F$b$h$$!#(B

      $B$=$l$>$l$N%W%m%H%3%k$G$O!"@\B3@h$H$7$F

      HTTP
      www (www.coins.tsukuba.ac.jp)
      NNTP
      news (news.coins.tsukuba.ac.jp $NNTPSERVER)
      SMTP
      orchid-nwc

      $B%W%m%0%i%`$r$D$/$k;~$K$O!"(B $B9TKv$N07$$(B(CR-LF)$B$K$bCm0U$7$J$$$5$$(B$B!#(B

      $BN}=,LdBj(B(603) $BJBNs(Bwcat

      wcat$B$G!"(Bwget $B%3%^%s%I$HF1MM$KJ#?t$N(B URL $B$r0z(B $B?t$Ke$N(B URL $B$,M?$($i$l(B $B$?;~$G$b!"$=$NJBNsEY$NHO0OFb$GF1;~$K%3%T!<$9$k$h$&$K$7$J$5$$!#(B

      $B%R%s%H!':GBg#n$^$G!"(Bfork() $B$7$F!"$=$l$>$l;R%W%m%;%9$G#18D$N%U%!%$%k$r(B $B%3%T!<$9$k!#;R6!$,=*N;$7$?$i!"

      $B

      $BN}=,LdBj(B(604) $BCfCG!&:F3+2DG=$J(Bwcat

      wcat$B$G!"!JBg$-$J!K%U%!%$%k$r%3%T!<$9$k;~!"Cf(B $BCG$9$k5!G=$r$D$1$J$5$$!#CfCG$H$O!"(B HTTP 1.1$B$GDj5A$5$l$F$$$k(B Range: $B$N5!G=$r(B $B;H$$!"0lEY%W%m%0%i%`$r(B$B=*N;(B$B$7$F$b!"

      $B%W%m%0%i%`$r=*N;$7$?8e$G$b$&0lEY

      wget $B%3%^%s%I$O!"(B-c $B%*%W%7%g%s$r;XDj$9$k$H!"CfCG$7$?B3$-$+$i:F3+$9$k!#(B

      $BN}=,LdBj(B(605) Time Protocol $B$N%/%i%$%"%s%H(B

      RFC868 $B$KDj5A$5$l$F$$$k(B Time Protocol $B$N%/%i%$%"%s(B $B%H(B(TCP) $B$r:n@.$7$J$5$$!#$=$7$F!"(Bdate $B%3%^%s%I$HN`;w$N7k2L$rI=<($7$J$5(B $B$$!#(B
      % ./time-client host 37 [$B
      Mon May 19 02:49:05 JST 2003
      % []
      

      $B$3$N%W%m%0%i%`$G$O!"(BTCP/IP $B$G%5!<%P$K@\B3$7$?8e!"2?$bAw$i$:$K%5!<%P$+(B $B$i#4%P%$%H$N?t$rFI$_9~$`!#$=$N#4%P%$%H$N?t$O!"%M%C%H%o!<%/!&%P%$%H!&%*!<(B $B%@$K$J$C$F$$$k$N$G!"(Bntohl() $B$G!"%[%9%H$N%P%$%H!&%*!<%@$KJQ49$9$k!#$3$N(B $BCM$K!"$"$kCM$GJd@5$7$F!"(BUnix $B$G;H$o$l$F$$$k(Btime_t $B$KJQ49$9$k!#:G8e$K!"(B strftime() $B$d(B localtime() $B$G%+%l%s%@!<$N7A<0$KJQ49$9$k!#(B

      RFC868 Time Protocol $B$G$O!"CM$O!"(B1900$BG/(B1$B7n(B1$BF|(B 0:00 (GMT) $B$r4p=`$K$7$?(B $BIC?t$rJV$9!#(Btime() $B%7%9%F%`%3!<%k$d(B gettimeofday() $B%7%9%F%`%3!<%k$G$O!"(B 1970 $BG/$r4p=`$K$7$F$$$k!#(Bstrftime() $B$d(B localtime() $B$r;H$&A0$K!":9J,$rJd@5$9$kI,MW$,$"$k!#(B

      $B$3$N2]Bj$G$O!"%]!<%HHV9f(B 37 $B$N(B time $B$r;H$$$J$5$$!#%]!<%HHV9f(B 13 $B$N(B daytime $B$r;H$C$F$O$J$i$J$$!#(B

      $B@\B3@h$N%[%9%H$H$7$F$O!"

      time
      azalea1-azalea60, balsam1-balsam60, canna1-canna50, localhost

      $BN}=,LdBj(B(606) netstat$B%3%^%s%I(B

      netstat $B%3%^%s%I$r;H$&$H!"$=$N;~MxMQ$5$l$F$$$k7k9g(B(connection)$B$rI=<($9(B $B$k$3$H$,$G$-$k!#$3$N%3%^%s%I$r;H$C$F!"%M%C%H%o!<%/$NMxMQ>u67$rI=<($7$J(B $B$5$$!#(B

      $B

      -a (all)
      $BA4$F!#@\B3$rBT$C$F$$$k%5!<%P$N%=%1%C%H$bI=<($9$k!#(B
      -n (number)
      $B%M%C%H%o!<%/$N%"%I%l%9$rHV9f$GI=<($9$k!#(B

      $BN}=,LdBj(B(607) lsof$B%3%^%s%I(B

      lsof $B%3%^%s%I$O!"%W%m%;%9$,3+$$$F$$$k%U%!%$%k$rI=<($9$k%3%^%s%I$G$"(B $B$k!#(B-i $B%*%W%7%g%s$rIU$1$k$H!"%U%!%$%k$G$O$J$/%M%C%H%o!<%/(B (Internet) $B$N(B $BMxMQ>u67$,I=<($5$l$k!#(Blsof -i $B$rMxMQ$7$F!"%M%C%H%o!<%/$NMxMQ>u67$rI=<((B $B$7$J$5$$!#(B
      Last updated: 2008/06/03 19:29:48
      Yasushi Shinjo / <yas@is.tsukuba.ac.jp>