1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.mortbay.io.bio;
17
18 import java.io.IOException;
19 import java.net.InetAddress;
20 import java.net.InetSocketAddress;
21 import java.net.Socket;
22
23 import org.mortbay.io.Portable;
24 import org.mortbay.log.Log;
25
26
27
28
29
30
31
32 public class SocketEndPoint extends StreamEndPoint
33 {
34 final Socket _socket;
35 final InetSocketAddress _local;
36 final InetSocketAddress _remote;
37
38
39
40
41 public SocketEndPoint(Socket socket)
42 throws IOException
43 {
44 super(socket.getInputStream(),socket.getOutputStream());
45 _socket=socket;
46 _local=(InetSocketAddress)_socket.getLocalSocketAddress();
47 _remote=(InetSocketAddress)_socket.getRemoteSocketAddress();
48 }
49
50
51
52
53 public boolean isOpen()
54 {
55 return super.isOpen() && _socket!=null && !_socket.isClosed() && !_socket.isInputShutdown() && !_socket.isOutputShutdown();
56 }
57
58
59
60
61
62 public void shutdownOutput() throws IOException
63 {
64 if (!_socket.isClosed() && !_socket.isOutputShutdown())
65 _socket.shutdownOutput();
66 }
67
68
69
70
71
72 public void close() throws IOException
73 {
74 _socket.close();
75 _in=null;
76 _out=null;
77 }
78
79
80
81
82
83
84 public String getLocalAddr()
85 {
86 if (_local==null || _local.getAddress()==null || _local.getAddress().isAnyLocalAddress())
87 return Portable.ALL_INTERFACES;
88
89 return _local.getAddress().getHostAddress();
90 }
91
92
93
94
95
96 public String getLocalHost()
97 {
98 if (_local==null || _local.getAddress()==null || _local.getAddress().isAnyLocalAddress())
99 return Portable.ALL_INTERFACES;
100
101 return _local.getAddress().getCanonicalHostName();
102 }
103
104
105
106
107
108 public int getLocalPort()
109 {
110 if (_local==null)
111 return -1;
112 return _local.getPort();
113 }
114
115
116
117
118
119 public String getRemoteAddr()
120 {
121 if (_remote==null)
122 return null;
123 InetAddress addr = _remote.getAddress();
124 return ( addr == null ? null : addr.getHostAddress() );
125 }
126
127
128
129
130
131 public String getRemoteHost()
132 {
133 if (_remote==null)
134 return null;
135 return _remote.getAddress().getCanonicalHostName();
136 }
137
138
139
140
141
142 public int getRemotePort()
143 {
144 if (_remote==null)
145 return -1;
146 return _remote.getPort();
147 }
148
149
150
151
152
153 public Object getTransport()
154 {
155 return _socket;
156 }
157 }