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


$BEE;R!&>pJs9)3X7O(B/$B%7%9%F%`>pJs9)3X8&5f2J(BCS$B@l96(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/2005/No6.html
$B$"$k$$$O!" http://www.coins.tsukuba.ac.jp/~syspro/2005/
http://www.coins.tsukuba.ac.jp/~yas/

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

tcp_connect() $B$NFbIt$d(B getaddrinfo() $B$N:Y$+$$;H$$J}$OHt$P$7$F$b$h$$!#(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 IPv4 $B$G$O!"(BIP$B%"%I%l%9$rI=8=$9$k;~$K$O!"IaDL!"#8%S%C%H$:$D6h@Z$C$F!" 12.34.56.78 $B$O(B
	(((12 * 256)+34)*256+56)*256+78
$B$H$$$&?t$rI=$9$k!#(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, Netscape, sylpheed,sendmail $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!"(Badonis9.coins.tsukuba.ac.jp $B>e$GF0:n$7$F$$$k(B echo $B%5!<%P$rMxMQ$7$F$$$k(B(adonis9 $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            7/tcp
    echo            7/udp
    at-echo         204/tcp                         # AppleTalk echo
    at-echo         204/udp
    echo            4/ddp                           # AppleTalk Echo Protocol
    % telnet adonis9.coins.tsukuba.ac.jp 7 [$B
    Trying 130.158.86.29...
    Connected to adonis9.coins.tsukuba.ac.jp.
    Escape character is '^]'.
    hello[$B
    hello
    aaa[$B
    aaa
    ^]
    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 adonis7.coins.tsukuba.ac.jp 7 [$B ==> hello[$B sent: [hello ] received: [hello ] ==> aaa[$B sent: [aaa ] received: [aaa ] ==> ^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

       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
    
    
      28:	
      29:	#define BUFFERSIZE      1024
      30:	
      31:	int
      32:	echo_client( char *server, int portno )
      33:	{
      34:	    int sock ;
      35:	    char sbuf[BUFFERSIZE];
      36:	    char rbuf[BUFFERSIZE];
      37:	    FILE *in, *out ;
      38:	
      39:	        sock = tcp_connect( server, portno );
      40:	        if( sock<0 )
      41:	            exit( -1 );
      42:	        if( fdopen_sock(sock,&in,&out) < 0 )
      43:	        {
      44:	            fprintf(stderr,"fdooen()\n");
      45:	            exit( 1 );
      46:	        }
      47:	        printf("==> "); fflush(stdout);
      48:	        while( fgets(sbuf,BUFFERSIZE,stdin) )
      49:	        {
      50:	            fprintf(stdout,"sending: [%s]\n",sbuf );
      51:	            fprintf(out,"%s",sbuf );
      52:	            fgets( rbuf,BUFFERSIZE,in );
      53:	            printf("received: [%s]\n",rbuf );   
      54:	            printf("==> "); fflush(stdout);
      55:	        }
      56:	        printf("\n");
      57:	        fclose( in );
      58:	        fclose( out );
      59:	}
    
    
    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

      60:	
      61:	/* $B?7>k!"%7%9%F%`%W%m%0%i%`9V5AMQ(B */
      62:	
      63:	int tcp_connect( char *server, int portno )
      64:	{
      65:	    struct addrinfo hints, *ai;
      66:	    struct sockaddr_in addr ;   /* sockaddr_storage */
      67:	    int s ;
      68:	    int err ;
      69:	
      70:	        if( (s = socket(PF_INET, SOCK_STREAM, 0)) < 0 )
      71:	        {
      72:	            perror("socket");
      73:	            return( -1 );
      74:	        }
      75:	
      76:	        memset( &hints, 0, sizeof(hints) );
      77:	        hints.ai_family   = AF_INET ;
      78:	        hints.ai_socktype = SOCK_STREAM ;
      79:	        if( (err = getaddrinfo( server, NULL, &hints, &ai )) )
      80:	        {
      81:	            fprintf(stderr,"unknown host %s (%s)\n",server,gai_strerror(err) );
      82:	            close( s );
      83:	            return( -1 );
      84:	        }
      85:	        if( ai->ai_addrlen > sizeof(addr) )
      86:	        {
      87:	            fprintf(stderr,"sockaddr too large (%d) > (%d)\n",
      88:	                    ai->ai_addrlen,sizeof(addr) );
      89:	            freeaddrinfo( ai );
      90:	            close( s );
      91:	            return( -1 );
      92:	        }
      93:	        memcpy( &addr, ai->ai_addr, ai->ai_addrlen );
      94:	        addr.sin_port = htons( portno );
      95:	        freeaddrinfo( ai );
      96:	
      97:	        if( connect(s, (struct sockaddr *)&addr, sizeof(addr)) < 0 )
      98:	        {
      99:	            perror( server );
     100:	            close( s );
     101:	            return( -1 );
     102:	        }
     103:	        return( s );
     104:	}
    
    
    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!#$^$:!"%/%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

    IP $B%"%I%l%9$O!"J8;zNs$GM?$($i$l$?@\B3@h$N%5!<%P$N%[%9%HL>$+$i(B $B%i%$%V%i%j4X?t(B getaddrinfo() $B$r;H$C$FD4$Y$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

    $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$I$&$$$&=gHV$GCV$/$+$G#2$D$NJ}K!$,$"$k!#(B $B?t$NBg>.Hf3S$N;~$K!":G$b8z$$$F$/$k(B(most significant)$B$J%S%C%H!J$r4^$`%P(B $B%$%H!">e0L%P%$%H!K$r$I$3$KCV$/$+$G!"

    $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 $BNc!'(B0x12345678$B$NCV$-J}!#(B

    $B%P%$%H!&%*!<%@(B($B$=$N#1(B)

    $B?^!)(B $B%P%$%H!&%*!<%@(B($B$=$N#1(B)

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

    $B%P%$%H!&%*!<%@(B($B$=$N#2(B)

    $B?^!)(B $B%P%$%H!&%*!<%@(B($B$=$N#2(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$$$k$,!"$3$l$O(B getaddrinfo() $B4X?t$G!"(Bstruct addrinfo $B$N(B ai_addr $B$KJ]B8$=$l$?CJ3,$=$&(B $B$J$C$F$$$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)

    fdopen_sock()

     105:	
     106:	int
     107:	fdopen_sock( int sock, FILE **inp, FILE **outp )
     108:	{
     109:	    int sock2 ;
     110:	        if( (sock2=dup(sock)) < 0 )
     111:	        {
     112:	            return( -1 );
     113:	        }
     114:	        if( (*inp = fdopen( sock2, "r" )) == NULL )
     115:	        {
     116:	            close( sock2 );
     117:	            return( -1 );
     118:	        }
     119:	        if( (*outp = fdopen( sock, "w" )) == NULL )
     120:	        {
     121:	            fclose( *inp );
     122:	            *inp = 0 ;
     123:	            return( -1 );
     124:	        }
     125:	        setvbuf(*outp, (char *)NULL, _IOLBF, 0);
     126:	        return( 0 );
     127:	}
    
    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)

       1:	
       2:	/*
       3:	        EchoClient.java -- $BJ8;zNs$rAw
    
    
    

    $BN}=,LdBj(B

    $BN}=,LdBj(B(42) $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(43) 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

    $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

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

    HTTP
    www (www.coins.tsukuba.ac.jp)
    NNTP
    orchid-c ($NNTPSERVER)
    SMTP
    orchid-a
    finger
    adonis1-adonis45, azalea1-azalea45, localhost

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

    HTTP, finger, SMTP, NNTP $B$J$I!"%$%s%?!<%M%C%H$G;H$o$l$F$$$kDL?.%W%m%H(B $B%3%k$NB?$/$G$O!"9TKv$rI=$95-9f$H$7$F!"%-%c%j%C%8!&%j%?!<%s!J(Bcarrige return,CR$B!K$H%i%$%s!&%U%#!<%I(B(Line feed, LF)$B$NN>J}$,I,MW$G$"$k$HDj$a$i(B $B$l$F$$$k!#(BUnix $B$G$O!"DL>o%i%$%s!&%U%#!<%I!J%K%e!l9g$O!" printf("Hello,world\n");

    $B$7$+$7$J$,$i!"%$%s%?!<%M%C%H$N>e$N%W%m%0%i%`$r:n@.$9$k;~$K$O!" printf("Hello,world\r\n"); $B$3$3$G!"(B'\r' $B$,%-%c%j%C%8!&%j%?!<%s!"(B'\n' $B$,%i%$%s!&%U%#!<%I$G$"$k!#$$(B $B$:$l$b!"#C8@8l$N%=!<%9!&%W%m%0%i%`>e$G$O#2J8;z$K8+$($k$,!"#C%3%s%Q%$%i(B $B$K$h$j!"#1J8;z$KJQ49$5$l$k!#$=$l$>$l!"%"%9%-!<$G$O!"(B13(0x0d), 10(0x0a) $B$G$"$k!#(B

    $B5,3J>e$O!"(BCR-LF $B$,I,MW$H$5$l$F$$$k$,!"$BN}=,LdBj(B(44) $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!"

    $BN}=,LdBj(B(45) $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$$!#$=$7$F!"CfCG$7$?%3%T!<$r:F3+$G$-$k$h$&$K$7$J$5$$!#(B

    2005/06/06$BJdB-!'(B

    • $BLdBj$N85!9$N0U?^$O!"(BHTTP 1.1$B$GDj5A(B $B$5$l$F$$$k(B Range: $B$N5!G=$r;H$$!"0lEY%W%m%0%i%`$r=*N;$7$F$b!" $B%7%0%J%k$K$h$jCfCG$7$F:F3+$5$;$kJ}K!$bG'$a$k!#(B
    • $B%P%C%U%!C10L$G%-! $B%P%C%U%!C10L$G%]!<%j%s%0$9$k$b$N$OG'$a$k!#(B

    $BN}=,LdBj(B(46) 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$$!#(B13 $B$N(B daytime $B$r;H$C(B $B$F$O$J$i$J$$!#(B

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

    time
    adonis1-adonis45, azalea1-azalea45, localhost

    Last updated: 2005/06/06 18:27:54
    Yasushi Shinjo / <yas@is.tsukuba.ac.jp>