分类:
2008-09-18 11:23:42
-(dearvoid@:Forum)-(~/void/c/network)-( J5 b: w0 V9 ^% s' c, }
[$$=3891 $?=0] ; cat udp_1.c
#include
#include; o6 n3 W7 I1 b I$ Z
#include- S1 u5 O6 n( j" D* }. @
#include, ?8 Y$ P S9 I* P+ Y; W
#include1 S/ z0 V$ [; x c
#include
#include
#include- N+ B( W6 ]6 ~
#include
#include
#include$ N+ X* U5 ?0 N; t4 \$ }- h J8 a
#include
const int g_serverPort = 20001;
int
main()
{
int sockServer, len;
char buf[1024];
struct sockaddr_in saServer, saPeer;
socklen_t socklen;8 C1 L* x4 d/ g
sockServer = socket(AF_INET, SOCK_DGRAM, 0);3 m( j; C |7 B- X
if (sockServer < 0) {2 f6 }# \' m7 n% i
perror("socket"); `8 c: S8 s6 @8 Y" s2 H- n
exit(1);
}1 Y2 c. @ W" c% Y+ [- ~) a
memset(&saServer, 0, sizeof saServer);
saServer.sin_family = AF_INET;& [; [: ~ p5 S. p
saServer.sin_addr.s_addr = INADDR_ANY;
saServer.sin_port = htons(g_serverPort);( a# z' ]! }" B
if (bind(sockServer, (void *)&saServer, sizeof saServer) < 0) {- u+ @5 K% a2 G1 r
perror("bind");
exit(1); G% Z) J+ r) T) Y; E
}
: |9 U( z1 f3 e! r
/*
* don't forget to init `socklen' !/ ^" j( k/ _1 d5 `7 c2 z
*/0 y L* Y5 V- X5 y- U
socklen = sizeof saPeer;
len = recvfrom(sockServer, buf, sizeof buf, 0,
(void *)&saPeer, &socklen); z0 c6 x1 k- A. a* @) |5 p! F$ _
if (len < 0) {2 e0 T& C( z1 T P
perror("recvfrom");2 A9 A5 L, C* s
exit(1);5 ?7 Q' A6 N/ K5 b
}! q. T0 I! g2 i2 f/ c# c$ a( S
if (len) {
buf[len] = 0;2 {1 ]: \. |0 |' W* }
printf(">>> Received %d bytes from %s:%d\n", len,5 s( a5 Z* e. q9 u4 K$ m
inet_ntoa(saPeer.sin_addr), ntohs(saPeer.sin_port));
printf("%s\n", buf);* b7 A1 D( U. o% @' I' N1 \3 ^
}4 z4 C: d0 f5 s; t
7 N; a3 G: c9 Z; R; k0 Z2 L
close(sockServer);
- H- m+ o! y; T
return 0; @( F, p, L5 c4 ]9 @' F
}. J( e! _# x1 R2 I
-(dearvoid@:Forum)-(~/void/c/network)-4 o7 O6 b7 x5 o0 E0 r& B
[$$=3891 $?=0] ; gcc udp_1.c2 g: V$ c! t. s+ g9 `# e1 y2 _
-(dearvoid@:Forum)-(~/void/c/network)-
[$$=3891 $?=0] ; { sleep 10; echo -n 'hello, world' > /dev/udp/localhost/20001; } &
[1] 52957 ^5 | o0 }' x: i; X
-(dearvoid@:Forum)-(~/void/c/network)-
[$$=3891 $?=0] ; ./a.out
>>> Received 12 bytes from 127.0.0.1:32768
hello, world8 e" C. G( k" V: f' a8 C
[1]+ Done { sleep 10; echo -n 'hello, world' > /dev/udp/localhost/20001; }
-(dearvoid@:Forum)-(~/void/c/network)-- S7 ?* `' s! W+ F& P# L
[$$=3891 $?=0] ; bye