package com.yuan.testcs; import java.awt.datatransfer.StringSelection; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.Socket; public class Myclient { public static void main(String args[]){ try{ Socket socket=new Socket("127.0.0.1",5678); //請求鏈接server 端 //經過鏈接獲取server上面的輸入輸出流 PrintWriter out=new PrintWriter(socket.getOutputStream()); BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream())); //建立標準輸入流,從鍵盤接收數據 BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); //從鍵盤輸入讀取一行,發送到server端,當用戶輸入byte時候結束鏈接 String s; do{ s=sin.readLine(); out.println(s); out.flush(); if(!s.equals("bye")){ System.out.println("@server response:"+in.readLine()); }else { System.out.println("The connection is closed"); } }while(!s.equals("bye")); out.close(); in.close(); socket.close(); }catch (Exception e) { System.out.println("Error:"+e); } } }
package com.yuan.testcs; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class MyServer { public static void main(String[] args) { try { //創建server socket 而且等待鏈接 ServerSocket server=new ServerSocket(5678); Socket socket=server.accept(); //鏈接創建 經過Socket獲取鏈接的輸入和輸出流 BufferedReader in=new BufferedReader(new InputStreamReader(socket.getInputStream())); PrintWriter out=new PrintWriter(socket.getOutputStream()); //建立標準輸入流,從鍵盤輸入數據 BufferedReader sin=new BufferedReader(new InputStreamReader(System.in)); //先讀取client 發送的數據,而後從標準輸入讀取數據發送給client //當收到 bye 字符關閉鏈接 String s; while(!(s=in.readLine()).equals("bye")){ System.out.println("#Received from client:"+s); out.println(sin.readLine()); out.flush(); } System.out.println("The connection is closing"); out.close(); in.close(); socket.close(); server.close(); } catch (Exception e) { // TODO: handle exception System.out.println("Error:"+e); } } }
由於是在本地測試的,因此須要開啓兩個Dos 客戶端。另外程序是用Eclipse寫的,因此考慮直接用Java 的命令來執行。java
可是在用Javac 編譯的時候提示,不是本地命令,可是Java 命令能夠運行,因此考慮是參數配置的問題。最後發現是JAVA_HOME 裏面的jdk 路徑寫的不對致使,以前安裝了jre,最後安裝了jdk 。socket
但是事實上class文件已經有了。因而查看了博文:http://blog.csdn.net/harryweasley/article/details/45559129/測試
說是由於個人Java文件放在包裏面,因此找不到類。正確的方法是:先用Javac -d . MyServer.java 這樣編譯下來就帶有包的結構了。而後再用Java 包名稱.MyServer 來運行,MyClient也是同樣的操做。spa