分类:
2008-09-18 11:23:43
-(dearvoid@:Forum)-(~/void/c/network)-8 M8 e9 X4 I: A1 b
[$$=3891 $?=0] ; cat udp_1.c( r5 F0 v+ j' z- A$ q8 N
#include" e5 M" a& Q0 ^4 x& x/ _' @- i& e
#include+ x6 V9 {4 H: s: }, U% i- n6 }
#include
#include7 l! s2 K) {# @
#include
#include
#include
#include
#include@) O5 _) _- X; r8 r* ^, K* g; }5 C
#include2 `( O( F2 t& a; O6 x7 ?5 M
#include
#include
const int g_serverPort = 20001;9 U! T1 @( l3 d3 n/ j, ^
5 z; V: u2 E1 l9 o& [" O' W9 M0 v
int/ d0 m3 C% N# v/ t# _. m
main()2 K0 H8 T/ H, B: |0 w. a+ X! A) h
{
int sockServer, len;
char buf[1024];
struct sockaddr_in saServer, saPeer;
socklen_t socklen;
5 T9 R* |5 X+ X8 X; Q5 X
sockServer = socket(AF_INET, SOCK_DGRAM, 0);- H1 s; @1 ]) _) x
if (sockServer < 0) {- t3 i8 d$ ]4 Q" e1 D
perror("socket");
exit(1);
}
- J- |' S: e! t# ` ^4 F
memset(&saServer, 0, sizeof saServer);5 B# G" u: c% C4 Y |# [2 j/ |1 ~
saServer.sin_family = AF_INET;/ g V) ?5 y5 Q( D P/ c9 x `& b
saServer.sin_addr.s_addr = INADDR_ANY;
saServer.sin_port = htons(g_serverPort);8 @( \5 f! n: F9 Z# H
if (bind(sockServer, (void *)&saServer, sizeof saServer) < 0) {, M2 Y; C8 K" W% g: w) N
perror("bind");
exit(1);
}
: g0 o4 `* [7 h% T' Y% c8 o! R- U0 z
/*' N0 Q5 S' w- l4 v. f8 d% F
* don't forget to init `socklen' !
*/( I' |' @7 k d5 x# o4 _& x
socklen = sizeof saPeer;) g& r, j z" K0 {
len = recvfrom(sockServer, buf, sizeof buf, 0,
(void *)&saPeer, &socklen);
if (len < 0) {
perror("recvfrom");
exit(1);' [2 @4 d) j; I4 N1 E
}- C" S, `! W/ E h9 l
if (len) {) `+ l, W5 o, R. D- {
buf[len] = 0;7 u6 l" X6 l! m' z, V
printf(">>> Received %d bytes from %s:%d\n", len,% ~/ S( |: |: h+ o) D
inet_ntoa(saPeer.sin_addr), ntohs(saPeer.sin_port));
printf("%s\n", buf);
}
close(sockServer);
return 0;
}7 Y- S. R$ e! }6 N4 ?
-(dearvoid@:Forum)-(~/void/c/network)-
[$$=3891 $?=0] ; gcc udp_1.c5 W9 U: {0 a+ F, [% Y% C; `; D
-(dearvoid@:Forum)-(~/void/c/network)-
[$$=3891 $?=0] ; { sleep 10; echo -n 'hello, world' > /dev/udp/localhost/20001; } && N' |' F4 ~) H
[1] 5295
-(dearvoid@:Forum)-(~/void/c/network)-6 N; D: `9 D7 u3 d3 H# ]# z( B, ~
[$$=3891 $?=0] ; ./a.out
>>> Received 12 bytes from 127.0.0.1:327681 l; k* g/ Y0 i) q( F
hello, world
[1]+ Done { sleep 10; echo -n 'hello, world' > /dev/udp/localhost/20001; }
-(dearvoid@:Forum)-(~/void/c/network)-* @4 j3 c+ K: U4 R2 |1 Z( w9 [
[$$=3891 $?=0] ; bye# p% L) z7 I: |4 }8 T