start of new file
[IRC.git] / Robust / src / ClassLibrary / SocketJava.java
index ab7327e7ea5943ba9c3195277bfa26c242251783..c2b85418b7799b1e25f72d2d93d38849dd568f70 100644 (file)
@@ -1,10 +1,40 @@
 public class Socket {
-    /* Data pending flag */
     /* 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);
+    }
     
-    Socket() {
+    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);
+
+    public static native int nativeConnect(int fd, byte[] address, int port);
     
     int setFD(int filed) {
        fd=filed;
@@ -14,11 +44,15 @@ public class Socket {
        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() {