Java Reference
In-Depth Information
private
static
final
Logger
logger
=
Logger
.
getLogger
(
"Redirector"
);
private
final
int
port
;
private
final
String
newSite
;
public
Redirector
(
String
newSite
,
int
port
)
{
this
.
port
=
port
;
this
.
newSite
=
newSite
;
}
public
void
start
()
{
try
(
ServerSocket
server
=
new
ServerSocket
(
port
))
{
logger
.
info
(
"Redirecting connections on port "
+
server
.
getLocalPort
()
+
" to "
+
newSite
);
while
(
true
)
{
try
{
Socket
s
=
server
.
accept
();
Thread
t
=
new
RedirectThread
(
s
);
t
.
start
();
}
catch
(
IOException
ex
)
{
logger
.
warning
(
"Exception accepting connection"
);
}
catch
(
RuntimeException
ex
)
{
logger
.
log
(
Level
.
SEVERE
,
"Unexpected error"
,
ex
);
}
}
}
catch
(
BindException
ex
)
{
logger
.
log
(
Level
.
SEVERE
,
"Could not start server."
,
ex
);
}
catch
(
IOException
ex
)
{
logger
.
log
(
Level
.
SEVERE
,
"Error opening server socket"
,
ex
);
}
}
private
class
RedirectThread
extends
Thread
{
private
final
Socket
connection
;
RedirectThread
(
Socket
s
)
{
this
.
connection
=
s
;
}
public
void
run
()
{
try
{
Writer
out
=
new
BufferedWriter
(
new
OutputStreamWriter
(
connection
.
getOutputStream
(),
"US-ASCII"
)
);
Reader
in
=
new
InputStreamReader
(
new
BufferedInputStream
(
connection
.
getInputStream
()