package tcp;
import java.io.*;import java.net.*;
public class TcpServer {
/** * @param args */ public static void main(String[] args) { TcpServer ts = new TcpServer(); //多线程的例子 ts.ThreadServer();// 单线程的例子.// ts.easySocket(); } public void easySocket (){ try { ServerSocket ss = new ServerSocket(5000); Socket s = ss.accept(); System.out.println("sssss"); InputStream is = s.getInputStream(); OutputStream os = s.getOutputStream(); String str = "大家好!这是server端的信息!"; os.write(str.getBytes()); //通过包装类,来实现一行一行的读取.不用自己写判断. BufferedReader br = new BufferedReader(new InputStreamReader(is)); System.out.println(br.readLine()); /*只能读取一个字节,要么就自己写方法,判断是回车还是换行. byte[] buf = new byte[1024]; int len = is.read(buf); System.out.println(new String(buf,0,len)); is.close(); */ //关闭包装类的对象,就会自动的关闭底层类的对象.所以不需要写is.close() br.close(); os.close(); s.close(); ss.close(); } catch (IOException e) { e.printStackTrace(); } } public void ThreadServer(){ try { ServerSocket ss = new ServerSocket(3000); while(true){ Socket s = ss.accept(); new Thread(new TransformSocket(s)).start(); } } catch (IOException e) { e.printStackTrace(); } }
}
package tcp;
import java.io.*;import java.net.Socket;
public class TransformSocket implements Runnable {
private Socket s = null; public TransformSocket(Socket s){ this.s = s; } public void run() { try { InputStream is = s.getInputStream(); BufferedReader br = new BufferedReader(new InputStreamReader(is)); OutputStream os = s.getOutputStream(); PrintWriter pw = new PrintWriter(os,true);
//可以再while循环中做更多的事情. while(true){ String readLine = br.readLine(); if(readLine.equals("quit")){ break; } System.out.println(readLine); pw.println(readLine+"---!!!!!!");
} pw.close(); br.close(); s.close(); } catch (IOException e) { e.printStackTrace(); } }
}