1. 程式人生 > >Java語言,基於TCP編寫一個簡單的Client/Server 網路應用程式。

Java語言,基於TCP編寫一個簡單的Client/Server 網路應用程式。

要求實現客戶向伺服器傳輸任意一個字串,伺服器將收到的字串變換成大寫後傳回客戶。

//客戶端:

package tcpClient;


import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStreamReader;

import java.net.Socket;

public class tcpClient {
    private static Socket clientSocket;
    public static void main(String args[]) throws Exception {
        String sentence; // 宣告字串變數用於儲存字串輸入和傳送
        String modifiedSentence;// 從伺服器得到,並送到使用者標準輸出

        System.out.println("請輸入要轉換的字串:");
        clientSocket = new Socket("localhost", 8579);  // clientSocket為定義的套接字
        BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));// 建立inFromUser程式的輸入流
        DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());//將流連線到標準輸入
        BufferedReader inFromServer =new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));//連線套接字的輸入流
        sentence = inFromUser.readLine();//將使用者輸入的一行讀入到sentence中
        outToServer.writeBytes(sentence + '\n'); // outToServer程式的輸出流
        modifiedSentence = inFromServer.readLine();// 當到達伺服器時,他們進入modifiedSentence字串中
        System.out.println("FROM SERVER:" + modifiedSentence);// 將伺服器返回來的modifiedSentence輸出顯示
        clientSocket.close();// 關閉套接字,tcp連線也隨之關閉
    }
    

}

//伺服器端:

package tcpServer;

import java.io.BufferedReader;

import java.io.DataOutputStream;

import java.io.InputStreamReader;

import java.net.ServerSocket;

import java.net.Socket;

class server {
    private static ServerSocket welcomeSocket;
    public static void main(String argv[]) throws Exception {
        String clientSentence;//宣告字串變數用於儲存字串輸入和傳送
        String capitalizedSentence; // 從客戶端得到
        welcomeSocket = new ServerSocket(8579);// 建立welcomeSocket物件,在8579埠進行監聽
        while (true) {
            Socket connectionSocket = welcomeSocket.accept();//獲取從客戶端傳來的字元
            BufferedReader infromClient = new BufferedReader(
                    new InputStreamReader(connectionSocket.getInputStream()));
            DataOutputStream outToClient =new DataOutputStream(connectionSocket.getOutputStream());// outToClient程式的輸出流
            clientSentence = infromClient.readLine();//把使用者輸入的送入clientSentence中
            capitalizedSentence = clientSentence.toUpperCase() + '\n';// 將傳送行中的小寫轉換成大寫
            outToClient.writeBytes(capitalizedSentence);
            
        }
    }
}