java學習筆記------java網絡編程基礎二

這次只是對上次代碼的回顧,以及添加了一點小功能:能供通過在控制檯輸入輸出信息來模擬服務器和客戶端的通訊,不過太過簡單,只能按順序一人一句,屬於半雙工,下一篇應該就是全雙工的了!!大笑

代碼如下:

   模擬服務器:

  

//增加功能   可以通過控制檯輸入輸出信息    交換數據
package ServerTest2;

import java.io.*;
import java.net.*;

public class MyServer2 {

	public MyServer2(){
		try {
			//監聽9999端口
			ServerSocket ss = new ServerSocket(9999);
			System.out.println("我是服務器,我在9999端口進行監聽");
			//等待連接
			Socket s = ss.accept();
			while (true) {
				// 連接後接收來自客戶端的消息
				InputStreamReader isr = new InputStreamReader(s
						.getInputStream());
				BufferedReader br = new BufferedReader(isr);
				String getinfo = br.readLine();
				System.out.println("接收到:" + getinfo);
				if(getinfo.equals("bye")){
					System.out.println("斷開連接");
					s.close();
					break;
				}
                
				System.out.println("請輸入要返回給客戶端的信息:");
				InputStreamReader isr2 = new InputStreamReader(System.in);
				BufferedReader br2 = new BufferedReader(isr2);
				PrintWriter pw = new PrintWriter(s.getOutputStream(), true);
				
				pw.println(br2.readLine());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		MyServer2 mc2 = new MyServer2();
	}
}
  模擬客戶端:

package ClientTest2;

import java.net.*;
import java.io.*;

public class MyClient2 {


	public MyClient2(){
		
		try {
			//連接本機9999端口
			Socket s = new Socket("127.0.0.1",9999);
			System.out.println("連接成功!");
			//連接後  向服務器發送信息
			
			while(true){
				System.out.println("請輸入要發送給服務器的數據:");
				InputStreamReader isr = new InputStreamReader(System.in);
				BufferedReader br = new BufferedReader(isr);
				String outinfo = br.readLine();
				PrintWriter pw =new PrintWriter(s.getOutputStream(),true);
				pw.println(outinfo);
				if(outinfo.equals("bye")){
					System.out.println("斷開連接");
					s.close();
					break;
				}
				//讀取從服務器反饋回來的信息
				InputStreamReader isr2 = new InputStreamReader(s.getInputStream());
				BufferedReader br2 = new BufferedReader(isr2);
				System.out.println("收到服務器的反饋信息:"+br2.readLine());
			}
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
	public static void main(String[] args) {
		// TODO Auto-generated method stub

		MyClient2 mc2 = new MyClient2();
	}

}

運行結果:

   服務器端:


  客戶端:


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章