Java TCP通訊聊天程式
阿新 • • 發佈:2018-11-02
編寫兩個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();
}
}
輸出結果: