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

sunxpa ·¢±íÓÚ 2007-1-12 10:12

¡¾ÇóÖú¡¿Linux IPv6ÍøÂçͨÐÅ

±¾ÈËÕýÔÚ´ÓÊÂIPv6Ñо¿£¬×î½ü±àÁËÒ»¸öLinux IPv6 µÄUDP¿Í»§¶ËºÍ·þÎñ¶Ë³ÌÐò£¬Æä»ù´¡ÊÇÒÔǰ¿ÉÒÔÔËÐеÄv4³ÌÐòÖ®Éϸıà³Év6µÄ¡£ÎÒµÄPC»·¾³ÊÇLinux 2.4.18-20£¬Ö§³ÖIPv6£¬Ö§³ÖIPv4ºÍipv6£¬¾­¹ýµØÖ·ÅäÖúó¿ÉÒÔÓëÁíÍâһ̨PCÏ໥pingͨ¡£µ±ÎÒÓñàдµÄ³ÌÐòÔÚһ̨PC»úÉϲâÊÔʱ£¬·þÎñ¶Ë³ÌÐò½ÓÊÕ²»µ½Êý¾Ý£¬µ±ÔÚÁ½Ì¨PC»úÉϲâÊÔʱ£¬³öÏÖÈçÏ´íÎóÐÅÏ¢£º^V R P"L'X*Af#{ L!\+P
  bind:Cannot assign requested address
KeK@,?X"uq-B#kW ÓÉÓÚ±¾È˶àÄê´ÓÊÂLinuxÈí¼þ¿ª·¢£¬±àдUDPͨѶ³ÌÐòÓ¦¸ÃÊǺܼòµ¥µÄÎÊÌ⣬ÏÖÔÚ³öÏÖÉÏÊöÇé¿ö£¬ÈÃÎÒºÜÀ§»ó£¬²»ÖªÎÊÌâ³öÏÖÔں䦣¿Çë¸÷λÓо­ÑéµÄ¸ßÊÖÖ¸µãһϣ¬²¢»Ø´ðÏÂÊöÎÊÌ⣬лл£¡| M:~y~r:S(f n
£¨1£©³ýµØÖ·½á¹¹ºÍµØÖ·½âÎöµÄ²îÒìÍ⣬IPv6ºÍIPv4ÔÚÍøÂç±à³Ì·½Ãæµ½µ×ÓÐʲô²îÒ죿GK8G*n}_i O_9\X)w
£¨2£©¼ÈÈ»Äܹ»pingͨ¶Ô·½µÄIPv6µØÖ·£¬µ«ÎªÊ²Ã´»á°ó¶¨´íÎó£¬ÊDz»ÊÇÔÚÅäÖ÷½ÃæÒª×÷ÆäËü¹¤×÷£¿

flag ·¢±íÓÚ 2007-1-12 10:49

ºÇºÇ£¬no code no talk

sunxpa ·¢±íÓÚ 2007-1-12 15:28

°ïæ·ÖÎöLinux IPv6 ͨѶ´úÂë

·þÎñ¶Ë³ÌÐòÈçÏ£ºc1P oc O
#include <sys/types.h>
#O6v9p7Of)x #include <sys/socket.h>p:QCkTY a
#include <sys/poll.h>8O$Mb-Q+t}3E/]"O;C
#include <sys/ipc.h>
7^ ?A.z+@/IpM #include <sys/ioctl.h>`$M.Z$u"T^4U0j so
#include <sys/select.h>
^mx `{&Bo5` @ #include <sys/shm.h>
I;lykf%E"t] #include <sys/un.h>
G&K|q)m2`b #include <netinet/in.h> Q|Ep$`!uJ#x
#include <arpa/inet.h>
Uw-z3b hc"\:n/C\ #include <stdio.h>0}9H;h HH(UX2nqR.r
#include <unistd.h>)R0SWQ|bXc
#include <stdlib.h>,A!^!w/Y S
#include <string.h>
#K W!p"ij #include <errno.h>Y7t y9_bGF vd~
int main ()F/d$?/R;N;v,n
{
"Xu3K^D]S3e int sock,sockfd;
MG4j7N"R@*C unsigned char v6[16]; O m Pq6ZY[Za+Y
struct sockaddr_in6 addr,servaddr;
/cJFR0M"~#S(B socklen_t fromlen;
`"JjE8C char packetbuffer[1024];
$d2\ W L} int size;*X AphC;A1{(b+W
size_t len;IPN)_M4dE/]u
// create sockets
%c{;e3U1K_h(KP nH}1Z0A4ln,]/Vp
sock = socket(PF_INET6,SOCK_DGRAM,0);
ox0H7\,S%C5R if (sock == -1)
-` s l(n+{n C v {5I {gmeUE
  printf(" create socket error\n");
x.~ w2ha,e+Jj   exit(-1);
(yP$Q,M4g7n9q.X;Nk }GY,oAi*sKw(DCh#q[0x+K
printf("Create socket 6 =%d\n",sock); J5Dt#q4bA
// bind sockets
Rf k9tx&l Z7Ee1H? memset(&addr,0,sizeof(struct sockaddr_in6));
5u%L:K?#Sfx|4y addr.sin6_family = AF_INET6;-Fb5Y6]h)KN(@4]nVj
addr.sin6_port = htons(9000);
"t3OrHm~-an if (inet_pton (AF_INET6, "3ffe:321f::50a", &addr.sin6_addr) <= 0) {"e/k8sh? Iy4[2G
  printf ("inet_pton error \n");
WG#eh'\}k   exit (3);
+Vy5C,c2a4C0I }sY v#[ s F;J1ZY]
if (bind(sock,(struct sockaddr *)&addr,sizeof(addr)) != 0)
kQbF4mcIF {N jY%i9Z
  printf("bind udp6 rtp error!\n");
} Z xPD t   exit(-1);
hOJ"iW:@0t }
GRX*|%L/Z j!Nt-K{ printf("Wait receive data ....\n");U-s MN^
fromlen = sizeof( struct sockaddr_in6 );[(M&w X7HG:k
     //int rcvtimeo = 30000 ; // 45 sec insteadof 45 as default+nj T~w
     //setsockopt(sock, SOL_SOCKET , SO_RCVTIMEO , (const char *)&rcvtimeo , sizeof(rcvtimeo) );
a F Ffja*A{Ek while(1)
*o6]g1fU w0d~ {
f:C%x_0{;N9o9M7c   int recvlen=0;
Hk*d:UFz)a m   recvlen = recvfrom(sock,packetbuffer,1024,0,(struct sockaddr *)&servaddr,&fromlen);
[ h-IKJ:y{)t   if ( recvlen <0 )
l-p Q%vd Fc+h[[    continue;
!V M'p[aU,l~F T   elsebIH/k x;\!S
  {(Kaj5hV j
   printf("Receive msg>>%s\n",packetbuffer);
)?vN$t9Jtm)Y iq4s    break;
b6z?'L)ZY+FK   }
6O7d6Uf+P E IE;G }
"?)z-rg'` close(sock);m `)p2hQ8T0O1`fB
return 0;
!i ^Y'C R(p us'i0Y }
G!t$Sn}5|kb ·¢ËͶ˳ÌÐòÈçÏ£º3\@ y0NG$K4FL
#include <sys/types.h>9N~Qe B9@n9YH
#include <sys/socket.h>Q,]0d/p|[)[[v
#include <sys/poll.h>$iN,tEC G
#include <sys/ipc.h> |X4S#h]^0C!Tw `b(O
#include <sys/shm.h>
S(i syNy3Q_ #include <sys/un.h>
Y/{(WG%bL A0` #include <netinet/in.h> [.ddU'{Wj
#include <arpa/inet.h>
1q2`:Y5Uz-|"XdU;e #include <stdio.h>Q x0kqk\o
#include <unistd.h>
6lhf*Eh/s(?:LB #include <stdlib.h>#ek,b}6z,Z|R
#include <string.h>
c;b1Q!w&V!Oz #include <errno.h>
9S-za i } int main () i]~)Qu8zV a
{
4{T(\#n7a G8md int sockfd;uA9C.cZ%G9a
struct sockaddr_in6 servaddr;
i2fM`2Ke printf("socket\n");
PU4sL+|t:^#~ if ((sockfd = socket (AF_INET6, SOCK_DGRAM, 0)) < 0) {w)u/oh!p6?c@op
  perror ("socket");i9^wT+X'I yF a
  exit (2);
w8kV;@9Q2OGbQ }(p@$HgL1L [F g
printf("sock=%d\n",sockfd);nP[e`]M
bzero (&servaddr, sizeof (servaddr));sVTa'n_)^%i
servaddr.sin6_family = AF_INET6;Rs'Q[Z1_!C P2@6vD
servaddr.sin6_port = htons (8000);~`,|"xh5j
if (inet_pton (AF_INET6, "3ffe:321f::50a", &servaddr.sin6_addr) <= 0) {-rZPm3Pw YF,N#A*x
  printf ("inet_pton error\n");
kN$B"pT   exit (3);
*Wp'{ryyi\O8C }
XL1IWEa#}1| if (bind (sockfd, (struct sockaddr *)&servaddr, sizeof (servaddr)) < 0)v6]"r*M~Z)ar8T4q
  {UWqui'q
  perror ("bind");u @ x2z7} [
  exit (4);[ t;z(~z,AF9R `
}
)q4qKjV'pN;z+p printf("sendto\n");*oCNU{*d {
sendto(sockfd, "123456789", 9, 0, (struct sockaddr *)&servaddr, sizeof(struct sockaddr_in6));
4ud+lUE@c F,n close (sockfd);&V*} V)u:bV'U
return 0;
CdG`&X],d d3T3D)L }

flag ·¢±íÓÚ 2007-1-12 15:44

¿´µØÖ·¸ñÊ½ËÆºõ²»ÏóÊDZê×¼µÄ£¬Ç°Õó¸ã¹ý IPv6£¬ËƺõÊÇf¿ªÍ·µÄ¡£²»¹ýIPv6µÄµØÖ·½á¹¹ÊDZȽϸ´ÔÓ£¬½¨ÒéÂ¥Ö÷Ñо¿Ò»Ï¡£

lelecool ·¢±íÓÚ 2007-7-2 19:56

µØÖ·Ã»ÓÐÎÊÌâ....

Clerk_9919 ·¢±íÓÚ 2007-7-9 13:28

¿ÉÄÜÊÇÄãµÄ±¾µØÂ·Óɲ»ÕýÈ·£¬ÔÚÄãPingµÄʱºòÄã¿ÉÒÔÖ¸¶¨½Ó¿ÚËùÒÔ¿ÉÒÔPingͨ£¬ÔÚ´úÂëÖØÈ´Ã»ÓÐËùÒÔ²»ÄÜÊÕµ½Êý¾Ý¡£Ö»Òª¼ÓÉÏ´ËIPʹÓÃÄĸö½Ó¿ÚµÄ¾²Ì¬Â·ÓɾÍÓ¦¸Ã¿ÉÒÔÁË¡£

Clerk_9919 ·¢±íÓÚ 2007-7-9 13:33

ÄãÈ·È϶˿ÚûÓб»Õ¼ÓÃô

Ò³: [1]

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