最好在DOS界面演示,由於在Eclipse輸入法問題,只能聊一兩句 客戶端: import java.io.InputStream; import java.io.OutputStream; import java.net.Socket; import java.util.Scanner; /* * 客戶端接收控制檯的數據,發送到服務端, * 當服務端接收到數據後,回客戶端一條信息。 */ public class SendClient { public static void main(String[] args) throws Exception { //發送端,發送的ip和端口 Socket socket=new Socket("127.0.0.1", 8888); OutputStream os=socket.getOutputStream();//發送給服務器 InputStream is=null;//讀取收服務器發送來的數據 byte[]b=new byte[1024];//接收緩存 System.out.println("請輸入發送數據"); Scanner sc=new Scanner(System.in); String str=null; while(true){ str=sc.nextLine(); if("000".equals(str)){//輸入000結束 break; } byte[]a=str.getBytes(); //若是接收是用緩衝流的話,有readLine()時,發送端必定要有回車換行符服務器才能接受到 os.write(a, 0, a.length); os.write("\r\n".getBytes()); //讀取服務器發送來的數據 is=socket.getInputStream();//得到讀取管道。 int len=is.read(b); System.out.println(new String (b,0,len));//打印出來 } socket.close(); os.close(); } } 服務端: import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket; import java.security.Provider.Service; import java.util.Scanner; /* * 客戶端接收控制檯的數據,發送到服務端, * 當服務端接收到數據後,回客戶端一條信息。 */ public class ReceivceClient { public static void main(String[] args) throws Exception { //建立接收 ServerSocket serverSocket=new ServerSocket(8888); //返回的是一個socket Socket socket=serverSocket.accept();//監聽,看有沒有客戶端鏈接,此方法有阻塞,接收不到不會往下執行 //得到讀取管道 InputStream is=socket.getInputStream(); //建立發送管道 OutputStream os=null; Scanner sc=new Scanner(System.in); byte[]a=new byte[1024];//數據緩衝區 int len=-1; String string; while((len=is.read(a))!=-1){ //接收打印 String str=new String(a, 0,len); System.out.println(str); //發送 os=socket.getOutputStream(); string=sc.nextLine(); if("000".equals(string)){ break; } //若是接收是用緩衝流的話,有readLine()時,發送端必定要有回車換行符服務器才能接受到 os.write(string.getBytes()); os.write("\r\n".getBytes()); } serverSocket.close(); os.close(); } }