1. 程式人生 > >Java TCP通訊聊天程式

Java TCP通訊聊天程式

 編寫兩個java application應用程式,完成以下功能:
 一個程式為服務端,建立TCP服務端套接字。
 另外一個程式為客戶端,建立TCP客戶端套接字。
 這兩個程式可以互聯,完成一個基於TCP/IP網路的文字聊天程式。

伺服器:

import java.io.IOException;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class Server {
    public
static void main(String[] args) throws IOException { //建立伺服器 PrintWriter pwtoclien = null; //字元列印輸出流 Scanner keybordscanner = null; Scanner inScanner = null; ServerSocket ss = null; System.out.println("等待客戶端連線。。。"); ss = new ServerSocket(6666); //建立一個接收連線客戶端的物件
Socket socket = ss.accept(); System.out.println(socket.getInetAddress() + "已成功連線到此臺伺服器上。"); //字元輸出流 pwtoclien = new PrintWriter(socket.getOutputStream()); pwtoclien.println("成功連線到伺服器,請您先發言。"); pwtoclien.flush(); keybordscanner = new Scanner(System.
in); inScanner = new Scanner(socket.getInputStream()); //阻塞等待客戶端傳送訊息過來 while (inScanner.hasNextLine()) { String indata = inScanner.nextLine(); System.out.println("客戶端:" + indata); System.out.print("服務端:"); String keyborddata = keybordscanner.nextLine(); pwtoclien.println(keyborddata); pwtoclien.flush(); } //關閉資源 pwtoclien.close(); keybordscanner.close(); inScanner.close(); ss.close(); } }

客戶端:

import java.io.IOException;
import java.io.PrintWriter;
import java.net.Socket;
import java.util.Scanner;

public class Client {
    public static void main(String[] args) throws IOException {   //建立客戶端
        Socket socket = null;
        Scanner keybordscanner = null;
        Scanner inScanner = null;
        PrintWriter pwtoserver = null;
        System.out.println("正在連線伺服器。。。");
        socket = new Socket("localhost", 6666);    //套接字描述IP地址和埠
        inScanner = new Scanner(socket.getInputStream());
        System.out.println(inScanner.nextLine());
        pwtoserver = new PrintWriter(socket.getOutputStream());
        System.out.print("客戶端:");
        //先讀取鍵盤錄入方可向服務端傳送訊息
        keybordscanner = new Scanner(System.in);
        while (keybordscanner.hasNextLine()) {
            String keyborddata = keybordscanner.nextLine();
            //寫到服務端的的控制檯
            pwtoserver.println(keyborddata);
            pwtoserver.flush();
            //阻塞等待接收服務端的訊息
            String indata = inScanner.nextLine();
            System.out.println("服務端:" + indata);
            System.out.print("客戶端:");
        }
        //關閉資源
        keybordscanner.close();
        pwtoserver.close();
        inScanner.close();
        socket.close();
    }
}

輸出結果:
在這裡插入圖片描述
在這裡插入圖片描述