服务端程序如下:
$Av0M&d:M:Fwww.linuxeden.com#include <sys/types.h>
#~/ki$CH4V
#include <sys/socket.h>
$^6G
DW~/?www.linuxeden.com#include <sys/poll.h>
uRU9hXGD)US
#include <sys/ipc.h>
Linux伊甸园论坛'Vo&ek,sMo hC/I+a
#include <sys/ioctl.h>
"Z8e"av1V#include <sys/select.h>
9H6\"h:AMn
qd
#include <sys/shm.h>
xH7OSP8z
#include <sys/un.h>
www.linuxeden.comm
Q6}W(X*gi%i
#include <netinet/in.h>
1z?
v z;_#include <arpa/inet.h>
{],spv-|#include <stdio.h>
aK C2r$KVH
#include <unistd.h>
*eR1y P K,B A`#|#M[
#include <stdlib.h>
CO3?Dj:s&Y#include <string.h>
9f
`"W'O H
#include <errno.h>
'r0j+i0qJLwww.linuxeden.comint main ()
,u,~P?'@M6H
{
#A3^[.m^6}/jT!U int sock,sockfd;
!i H|AoeR
unsigned char v6[16];
GT~:INW"p
struct sockaddr_in6 addr,servaddr;
L/t+}.~^3N9C-QK
socklen_t fromlen;
%]B*M,CG2yo7h char packetbuffer[1024];
Qx w/rd^o int size;
?tty5DR0Z^t
size_t len;
Mi8O
l+N$aupm // create sockets
www.linuxeden.comh9E\}7l-Xo
d7v)Mjms |J0r3rLinux伊甸园论坛 sock = socket(PF_INET6,SOCK_DGRAM,0);
SvtO&|www.linuxeden.com if (sock == -1)
Hj!EXu!jV {
.G/dy(@__k1o
printf(" create socket error\n");
Cgyx nQd
h
exit(-1);
II.XZ!z*om'luewww.linuxeden.com }
.h2z{]a{ u printf("Create socket 6 =%d\n",sock);
Linux伊甸园论坛 E1? u(G%y)V
// bind sockets
DfqH8s3c memset(&addr,0,sizeof(struct sockaddr_in6));
Y2bD hsKj&t*g
a addr.sin6_family = AF_INET6;
;CE#o;g Ig)k(a|})Z
addr.sin6_port = htons(9000);
4Qg6zhK2Y3X6yQ~3cwww.linuxeden.com if (inet_pton (AF_INET6, "3ffe:321f::50a", &addr.sin6_addr) <= 0) {
www.linuxeden.comCO)`-WE,b
printf ("inet_pton error \n");
CIPj|`*t9lT exit (3);
"}g"Qgk.{m+Rf }
E|6i:k(BH PS
if (bind(sock,(struct sockaddr *)&addr,sizeof(addr)) != 0)
,kQ$}9ZV!Dz+g
{
Linux伊甸园论坛VW+D4p My%wsf
printf("bind udp6 rtp error!\n");
%{b2PD\t-Y
g exit(-1);
www.linuxeden.comr)N:kd.Hi:E2S
}
\M.A3s`PS OELinux伊甸园论坛 printf("Wait receive data ....\n");
OUC[1V\5`oPhFLinux伊甸园论坛 fromlen = sizeof( struct sockaddr_in6 );
%i^Wz:jX3m@(aYe
//int rcvtimeo = 30000 ; // 45 sec insteadof 45 as default
`{1xdf{A~
B //setsockopt(sock, SOL_SOCKET , SO_RCVTIMEO , (const char *)&rcvtimeo , sizeof(rcvtimeo) );
Eb5p,vT yz&t
while(1)
W*H*}a$h8PI&a`
{
Linux伊甸园论坛3] TH0u6Ju
int recvlen=0;
Linux伊甸园论坛2?k
J;CVk
recvlen = recvfrom(sock,packetbuffer,1024,0,(struct sockaddr *)&servaddr,&fromlen);
www.linuxeden.com#X%\PDs0Mi-rH8_
if ( recvlen <0 )
6[)Ljun*T0aLinux伊甸园论坛 continue;
N#UK2|*U
else
/C@1G3a8R(jS
g T
{
CG2c#n/S$n/l2p printf("Receive msg>>%s\n",packetbuffer);
k"O`DL![\]
break;
g
O}[+k@$e
}
eD
e@"Nq p U }
l8a;cqY0Zwww.linuxeden.com close(sock);
yzz8[IY@ M;WLinux伊甸园论坛 return 0;
Jm6t9x:c)~ Hwww.linuxeden.com}
1b8[Z5f8~;a9dxU:n }W J发送端程序如下:
Linux伊甸园论坛8H0Mk:T8Es`b
#include <sys/types.h>
\.Fc#_u#include <sys/socket.h>
9yb1ZV.hwww.linuxeden.com#include <sys/poll.h>
JQ-o7N9P
#include <sys/ipc.h>
(AKaQ#e;c0K&Z,Bwww.linuxeden.com#include <sys/shm.h>
[)Bn^3{o
Jw6w
#include <sys/un.h>
www.linuxeden.como*Ur,C7m m_)j
#include <netinet/in.h>
www.linuxeden.com0P1PK/O#c_'Xl
#include <arpa/inet.h>
+J+f'N9R9mH|
#include <stdio.h>
-hg:g)k5ay0v#include <unistd.h>
jD2Is8{.L9I
#include <stdlib.h>
G%`2W(S\JFO+b6uPK#include <string.h>
Linux伊甸园论坛!ZpW"Q;h-W
#include <errno.h>
(P(O8p9p};Jhi-aint main ()
zY5k$q
UJ^
~t[
{
Linux伊甸园论坛EI?6}GS
int sockfd;
u)c"{LTu struct sockaddr_in6 servaddr;
Jx4tZ F4~uB
printf("socket\n");
8l1?7}4E{3D*Y1f
if ((sockfd = socket (AF_INET6, SOCK_DGRAM, 0)) < 0) {
"NNL$Xd\PLinux伊甸园论坛 perror ("socket");
lke#ird#Bh
d8p'A/a exit (2);
$@7X@
a.G8GZ
}
2K6EIE\ Vmu
printf("sock=%d\n",sockfd);
q;KGH"OsLp/k{ bzero (&servaddr, sizeof (servaddr));
ejA0HI@{/c9x_
servaddr.sin6_family = AF_INET6;
dmh'~f,{"^I"`0Nwww.linuxeden.com servaddr.sin6_port = htons (8000);
t4j5b5\^#@ if (inet_pton (AF_INET6, "3ffe:321f::50a", &servaddr.sin6_addr) <= 0) {
E,w+e9[+let
printf ("inet_pton error\n");
B+V-Dp2dR$v$r)xJ
exit (3);
P"e,T0zQ:BSOCc }
l4w;cx_.J1O#o&jp pLinux伊甸园论坛 if (bind (sockfd, (struct sockaddr *)&servaddr, sizeof (servaddr)) < 0)
8kpcoPK,iG
{
!x6Bf
v)I1Mj
U\Y perror ("bind");
3O Lf{{UVt exit (4);
w+WG
SGM%_8S} }
www.linuxeden.com-{
~T8VP+a*u
printf("sendto\n");
kF/lWAB
sendto(sockfd, "123456789", 9, 0, (struct sockaddr *)&servaddr, sizeof(struct sockaddr_in6));
@;X9v)Y(PzB
close (sockfd);
%yL^
S;Zc4JA0{
return 0;
Linux伊甸园论坛8nkW;D*@%{
}