Java网络编程(二) Java I/O分析(jdk1.4之前)
根据传输数据的方式这里把I/O流分为:
1.基于磁盘操作的I/O接口:File
2.基于网络操作的I/O接口:socket
下面看一个典型的socket连接实例
服务器端:
public class ThreadSocketServer {/** 服务器端口 **/public static final int PORT = 8189;public static void main(String[] args) {int i = 1;try {ServerSocket s = new ServerSocket(PORT);System.out.println("Listening on port: " + PORT);while (true) {Socket incoming = s.accept();System.out.println("Spawning" + i);Runnable r = new ThreadedEchoHandler(incoming);Thread t = new Thread(r);t.start();i++;}} catch (IOException e) {e.printStackTrace();}}}class ThreadedEchoHandler implements Runnable {private Socket incoming;public ThreadedEchoHandler(Socket i) {incoming = i;}@Overridepublic void run() {try {try {OutputStream outStream = incoming.getOutputStream();PrintWriter out = new PrintWriter(outStream, true);out.println("Hello!");} finally {incoming.close();}} catch (IOException e) {e.printStackTrace();}}}public class SocketClient {/** 客户端尝试连接的次数 **/public static final int CONNECT_UNM = 5000;/** 服务器端IP **/public static final String SERVER_IP = "127.0.0.1";public static void main(String[] args) {for (int i = 0; i < CONNECT_UNM; i++) {final int temp=i+1;new Thread(new Runnable() {@Overridepublic void run() {Socket s = null;try {s = new Socket(SERVER_IP, ThreadSocketServer.PORT);System.out.println("第" + temp + "尝试连接--分配的本地端口:"+ s.getLocalPort());InputStream inStream = s.getInputStream();Scanner in = new Scanner(inStream);System.out.println(in.nextLine());} catch (Exception e) {e.printStackTrace();} finally {try {s.close();} catch (IOException e) {}}}}).start();try {Thread.sleep(1);} catch (InterruptedException e) {e.printStackTrace();}}}}