home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 1995 November / PCWK1195.iso / inne / win95 / sieciowe / hotja32.lzh / hotjava / classsrc / net / socketinputstream.java < prev    next >
Text File  |  1995-08-11  |  2KB  |  97 lines

  1. /*
  2.  * @(#)SocketInputStream.java    1.13 95/05/10 Jonathan Payne
  3.  *
  4.  * Copyright (c) 1994 Sun Microsystems, Inc. All Rights Reserved.
  5.  *
  6.  * Permission to use, copy, modify, and distribute this software
  7.  * and its documentation for NON-COMMERCIAL purposes and without
  8.  * fee is hereby granted provided that this copyright notice
  9.  * appears in all copies. Please refer to the file "copyright.html"
  10.  * for further important copyright and licensing information.
  11.  *
  12.  * SUN MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF
  13.  * THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
  14.  * TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A
  15.  * PARTICULAR PURPOSE, OR NON-INFRINGEMENT. SUN SHALL NOT BE LIABLE FOR
  16.  * ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING, MODIFYING OR
  17.  * DISTRIBUTING THIS SOFTWARE OR ITS DERIVATIVES.
  18.  */
  19.  
  20. package net;
  21.  
  22. import java.io.*;
  23. import java.util.*;
  24.  
  25. /**
  26.  * This stream extends FileInputStream to implement BSD style UDP sockets.
  27.  * It closely parallels the BSD sockets interface.
  28.  *
  29.  * @version    1.13, 10 May 1995
  30.  * @author    Jonathan Payne
  31.  */
  32. class SocketInputStream extends FileInputStream {
  33.     private boolean eof = false;
  34.     private Socket owner;
  35.  
  36.     public SocketInputStream(Socket owner, int sock) {
  37.     super(sock);
  38.     this.owner = owner;
  39.     }
  40.  
  41.     /** Read into an array of bytes at the specified offset using
  42.         the recv socket primitive. */
  43.     private native int recv(byte b[], int off, int len);
  44.  
  45.     /** Read into a byte array data from the socket. */
  46.     public int read(byte b[]) {
  47.     return read(b, 0, b.length);
  48.     }
  49.  
  50.  
  51.     /** 
  52.      * Read into a byte array <i>b</i> at offset <i>off</i>, <i>length</i>
  53.      * bytes of data.
  54.      */
  55.     public int read(byte b[], int off, int length) {
  56.     if (eof) {
  57.         return -1;
  58.     }
  59.     int n = recv(b, off, length);
  60.     if (n <= 0) {
  61.         eof = true;
  62.         return -1;
  63.     }
  64.     return n;
  65.     }
  66.  
  67.     byte temp[] = new byte[1];
  68.  
  69.     /** Read a single byte from the socket. */
  70.     public int read() {
  71.     if (eof) {
  72.         return -1;
  73.     }
  74.  
  75.      int n = read(temp, 0, 1);
  76.     if (n <= 0) {
  77.         return -1;
  78.     }
  79.     return temp[0] & 0xff;
  80.     }
  81.  
  82.     /** not implemented for sockets, always returns zero. */
  83.     public int skip(int n) {
  84.     return(0);
  85.     }
  86.  
  87.     /** not implemented for sockets, always returns zero. */
  88.     public int available() {
  89.     return(0);
  90.     }
  91.  
  92.     /** override finalize, the fd is closed by the Socket */
  93.     protected void finalize() {
  94.     }
  95. }
  96.  
  97.