TCPServer和TCPClient(TODO未完成,只有代碼)

TCPServer與TCPClient 

首先直接來看代碼

import java.io.*;
import java.net.Socket;
import java.util.Scanner;

public class TcpClient {
    private static final String HOST = "localhost";
    private static final int PORT = 9999;

    /**
     * 基本思路:客戶端發送數據-》客戶端接收數據
     * PrintWriter將對象的格式表示打印到文本輸出流
     * @param args
     */
    public static void main(String[] args) {
        try {
            Socket socket = new Socket(HOST, PORT);
            // 客戶端發送數據IO輸出流
            OutputStream os = socket.getOutputStream();
            //autoFlush:JSP頁面是否自動刷新
            PrintWriter pw = new PrintWriter(os,true);
            // 客戶端接收數據IO輸入流
            InputStream is = socket.getInputStream();
            InputStreamReader isr = new InputStreamReader(is);
            BufferedReader br = new BufferedReader(isr);
            // 接收控制檯輸入數據
            Scanner sc = new Scanner(System.in);
            while(sc.hasNext()){
                String line = sc.nextLine();
                pw.println(line);
                String content = br.readLine();
                System.out.println("rev:"+content);
            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
        }
    }
}
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * 知識點:socket與ServerSocket
 * socket可以使一個應用從網絡中讀取和寫入數據,不同計算機上的兩個應用可以通過連接發送和接受字節流,當發送消息時,你需要知道對方的ip和端口,在java中,socket指的是java.net.Socket類。
 * 在客戶/服務器通信模式中,ServerSocket負責接收客戶連接請求,並生成與客戶端連接的Socket
 * 基本思路:這裏模擬的是同一個IP地址,所以只需要端口號,通過ServerSocket建立起聯繫,服務端先運行起來,服務端接收數據-》服務端發送數據
 */
public class TcpServer {
    private static final int PORT = 9999;
    public static void main(String[] args) {
        try {
            ServerSocket server = new ServerSocket(PORT);
//            while(true) {
                Socket socket = server.accept();
                // 服務端接收數據IO輸入流
                InputStream inputStream = socket.getInputStream();
                InputStreamReader isr = new InputStreamReader(inputStream);
                BufferedReader reader = new BufferedReader(isr);
                // 服務端發送數據IO輸出流
                OutputStream os = socket.getOutputStream();
                PrintWriter pw = new PrintWriter(os, true);
                String data = null;
                while ((data = reader.readLine()) != null) {
                    System.out.println(data);
                    pw.println("已經收到數據【"+data+"】");
                }
//            }
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
        }
    }
}

錯誤情況


 這裏如果直接先運行TCPClient會報錯,這裏牽扯到了Socket與ServerSocket的知識。 

 

正常運行結果 


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