public class Socket {
/* File Descriptor */
int fd;
-
+ SocketInputStream sin;
+ SocketOutputStream sout;
+
public Socket() {
+ sin=new SocketInputStream(this);
+ sout=new SocketOutputStream(this);
+ }
+
+ public InputStream getInputStream() {
+ return sin;
+ }
+
+ public OutputStream getOutputStream() {
+ return sout;
}
public Socket(String host, int port) {
InetAddress address=InetAddress.getByName(host);
fd=nativeBind(address.getAddress(), port);
nativeConnect(fd, address.getAddress(), port);
+ sin=new SocketInputStream(this);
+ sout=new SocketOutputStream(this);
}
public Socket(InetAddress address, int port) {
fd=nativeBind(address.getAddress(), port);
nativeConnect(fd, address.getAddress(), port);
+ sin=new SocketInputStream(this);
+ sout=new SocketOutputStream(this);
}
public static native int nativeBind(byte[] address, int port);
return nativeRead(b);
}
public void write(byte[] b) {
- nativeWrite(b);
+ nativeWrite(b, 0, b.length);
+ }
+
+ public void write(byte[] b, int offset, int len) {
+ nativeWrite(b, offset, len);
}
private native int nativeRead(byte[] b);
- private native void nativeWrite(byte[] b);
+ private native void nativeWrite(byte[] b, int offset, int len);
private native void nativeClose();
public void close() {