LinuxÒÁµéÔ°ÂÛ̳'s Archiver

liyoujunlizi ·¢±íÓÚ 2006-4-14 15:25

¡¾ÌÖÂÛ¡¿linuxÏÂipv6ÍøÂç±à³Ì

ÕâÊÇÊÇÎҸĵÄV4µÄ£¬¿ÉÖ´ÐеÄʱºò×ÜÊǰ󶨴íÂ¸÷ÃǰïÎÒ¿´ÏÂÄØ£¡Ð»Ð»£¡9zsz;Fm z
#include <stdio.h>@6M{`'C(fk6Cx
z&~ orn%U/jv]
#include <sys/types.h>$J| di Bd!Phm j\;C
hT@Q:U+@
#include <sys/socket.h>
H(wrC{h /O$oo4l-^I)i
#include <netinet/in.h>
EB4jT'y x5Cb;f'j
2_3F8xFm #include <arpa/inet.h>
1^I,d#?K+ZN ,RHaf R'K:XJ5{Q#P
#define PORT    1234
mAY&D~dN3DO*k8E .j*]/J/B5C b1T
#define BACKLOG 1"Qh`/o-~s

QV{a;R!e,\L int main(void)x+s9Wx#l z%U P
_]2s4Cw9wHE'y
{
[$wpl!mE Gw u)e Q(P@kt3}/YQ8ARI
        int listenfd, connectfd;6`/O,P-F| dP7S7l T

0bJwYe/gp8qG         struct sockaddr_in6  server;
duq4[-b Z
1RW`ei;Z         struct sockaddr_in6 client;
Z3k+r!f7J#o:J)w
6LOg-B&c0vB,t(|         int  sin_size;
9MD']gl?};B Ezk!f W.QA
        static char str[128];
9E-dj&l7b
:X9m6w5r]b&O$G Nz7}B*K-xS4~
d m iNie kj
        if((listenfd=socket(AF_INET6, SOCK_STREAM, 0))==-1)PB.`PQgy'pM

-U'L7Y@I$@         {
O@ZVkB
*A;M KEf                 perror("Create socket failed");
$R A H4l2x"z7K9LQ)c *?5^?![q9f_
                exit(-1);(r&x-nzq?i
Iw;\lt
        }
f _t,f4p"a,v+ui mo6PLy#]G&?|
        int opt=SO_REUSEADDR; P$L!E1D `uh[.F

O8Sod!O&\         setsockopt(listenfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt));FGPydN
\:Ku;@!k
        bzero(&server, sizeof(server));*c(f+wV g%YInf|

Y0L A4R I         server.sin6_family = AF_INET6;
cro"sU1ip}
e@@6T%[&U         server.sin6_port = htons(PORT);
zV8B [ r+E3{)[s :?y{D7[7hI"H
        server.sin6_addr=in6addr_any;
T*S@_5t3z@ n   c u4z5eg9D}]kt
        if (bind(listenfd, (struct sockaddr_storage *)&server, sizeof(struct sockaddr_storage))==-1)
b7Mn}6S6? Y a._g@ba]#h~
        {*i#`G bU?1EV-Ow

q H|S(W8LI4_                 perror("Bind error");X!rB:i^4p7z

#Ud!o)p)[Vd:q                 exit(-1);$C|$N6Wx%Vf
@#?)f'WZ"_)d-S
        }
t,_H'G9T
+EfD)j VF"Fgc         if (listen(listenfd, BACKLOG) == -1)jSAK:F I J

P|Qk8CEOq/c          {7e1W Vz(J+b:q](rP

SM {2c^:T"fi                 perror("listen error");
!U7e#K)g y"] e2v{+[9Fk
                exit(-1);(]0h*c2NS@9{l6u

R3F vZW$P`c V         }
_)ndH5A\,C E L*E
%^;o|2k5jf&|_4QD                
&~!I:K%rgoi7P/A 7F;tG]mZVY
          sin_size = sizeof(struct sockaddr_in6); F7xc]\
f o"ggXD0D+n
        if ((connectfd = accept(listenfd, (struct sockaddr *)&client, &sin_size)) == -1)R0n#y"Q+pI$@x
               
`:uhE!AW"q^K                  {
.[0QRG!W7h4DI L}
N;b's7U/w,n;o(it                         perror("accept error");:PUbFpeY iW+\
lYf:Oo2y1`C
                        exit(-1);
$XwTupep\)aF.x
:Y3gg9K-RL'w}!W M                 }
8@;ad p[ M?R
yx:bf oc-p         printf("you get a connection from %s\n", inet_ntop(AF_INET6,&client.sin6_addr,str,sizeof(str)));+Y%pR:f!L t.e
P9\n3Y6ZB
        send(connectfd,"welcome to my server\n",200, 0);
? M RHW*w$c?
0r P"S{.M*N         close(connectfd);I;q)G G(P i!D"N~7E

1S6J3A2Wp h+l6p2F)y         close(listenfd);
j4sX.h/o:e*mFf N%l Z C A5w0Z B
}O~ QoS u

8p5rNf5Y;ed @ietu
½á¹û¾ÍÕâ¸öÑù×Ó£¡£º c6R F$YN
[root@localhost program]# ./server(W(f$`L |9w1Lu'v ]*`u[
Bind error: Invalid argument

lenger81 ·¢±íÓÚ 2006-4-20 04:33

Äã×Ô¼ºÁ˽â¹þ×Ô¼ºÊ¹ÓõÄlinuxÓÐûÓÐÖ§³Öipv6£¬ÎÒÔÚÎÒʹÓõÄcentosÉÏÔËÐÐÄãдµÄ³ÌÐòûÓгöÏÖÄãËùνµÄÎÊÌâ¡£ ÄãÔÙ¿´¿´bindϵͳµ÷ÓõÄ˵Ã÷£¬ÄãµÄ´úÂëgcc±àÒëµÄʱºòÓ¦¸ÃÓÐwarnningµÄ°Ë¡£

flag ·¢±íÓÚ 2006-4-20 10:11

Â¥Ö÷ȷʵû˵ÊÇʲôϵͳ»·¾³¡£

liyoujunlizi ·¢±íÓÚ 2006-4-20 17:01

ÎÒµÄÊÇredhatr9.0£¬¸ã²»¶®ÊÇÔõô»ØÊÂÁË£¡±àÒëûÓгö´íµÄ£¡
O:H%LJ6?8KIu}
^?Y\Xr`3~qv ¾ÍÔËÐеÄʱºò ÓÐÎÊÌâ

flag ·¢±íÓÚ 2006-4-21 09:49

¿ÉÄÜÄÚºËûÓмÓIPv6µÄÖ§³Ö¡£ÔËÐÐÃüÁîinsmod ipv6»òÕßmodprobe ipv6£¬È»ºóÓÃÃüÁîlsmod¿ÉÒԲ鿴ϵͳÒѼÓÔØµÄÄ£¿éÁÐ±í£¬Èç¹û¿´µ½ipv6£¬Ôò±íʾģ¿éÒѾ­¼ÓÔØ³É¹¦¡£

Ò³: [1]

Powered by Discuz! Archiver 6.1.0  © 2001-2007 Comsenz Inc.