00001
00002
00003
00004
00005
00006
00007
00008
00009
#include "wvstreamlist.h"
00010
#include "wvlog.h"
00011
#include "wvudp.h"
00012
00013 int main(
int argc,
char **argv)
00014 {
00015
WvLog err(
"udp", WvLog::Error);
00016
WvIPPortAddr nothing;
00017
WvIPPortAddr remaddr(argc > 1 ? argv[1] :
"127.0.0.1:19");
00018
WvUDPStream sock(nothing, nothing);
00019
00020 sock.
enable_broadcasts();
00021
00022 err(WvLog::Info,
"Local address is %s.\n", *sock.
local());
00023
00024
wvcon->
autoforward(sock);
00025 sock.
autoforward(err);
00026
00027
WvStreamList l;
00028 l.add_after(l.tail,
wvcon,
false);
00029 l.add_after(l.tail, &sock,
false);
00030
00031
while (
wvcon->
isok() && sock.
isok())
00032 {
00033 sock.
setdest(remaddr);
00034
if (l.
select(1000))
00035 {
00036
if (
wvcon->
select(0))
00037
wvcon->
callback();
00038
else if (sock.
select(0))
00039 {
00040 sock.
callback();
00041 err(WvLog::Info,
" (remote: %s)\n", *sock.
src());
00042 }
00043 }
00044 }
00045
00046
if (!
wvcon->
isok() &&
wvcon->
geterr())
00047 err(
"stdin: %s\n", strerror(
wvcon->
geterr()));
00048
else if (!sock.
isok() && sock.
geterr())
00049 err(
"socket: %s\n", strerror(sock.
geterr()));
00050
00051
return 0;
00052 }