1. 程式人生 > >java用ServerSocket類結合io流實現一對一聊天(java實現簡單的TCP聊天程式只能用telnet連線後方可使用)

java用ServerSocket類結合io流實現一對一聊天(java實現簡單的TCP聊天程式只能用telnet連線後方可使用)

粗略寫了點程式碼,其實這種在流的實現方式裡面可以用好多種不同流方面的類,我這沒用最簡單的,而是那邊弄個流這邊弄個流,好讓自己熟悉不同流的類,希望大家別繞暈哈。可能對新手會有點繞,不過久了應該就會了,程式碼不唯一,功能達到了就行了,由於時間關係我就沒怎麼去優化了,程式碼如下:

本程式碼是先從服務端向客戶端傳送訊息,然後客戶端再向服務端傳送,若有一方不回覆則不能繼續聊天。這是一個簡單的類似TCP的聊天程式。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;

public class ServerSocketDemo {
	//一對一發訊息
public static void test3(){ //服務端 System.out.println("等待連線中。。。"); ServerSocket ss; try { ss = new ServerSocket(6666); while(true){ Socket a = ss.accept(); System.out.println(a.getInetAddress()+" 已連線成功!"); OutputStream os = a.getOutputStream(); PrintWriter pw = new PrintWriter(os); pw.write("歡迎來到"+"\r\n"); pw.write("小詢聊天世界"+"\r\n"); pw.flush(); //一對一互相傳送資料 服務端先發送訊息 若有一方不回覆則不能繼續聊天
Scanner scanner = new Scanner(System.in); String wl = null; InputStream is = a.getInputStream(); InputStreamReader isr = new InputStreamReader(is); BufferedReader br = new BufferedReader(isr); while (scanner.hasNextLine()) { String str = scanner.nextLine(); pw.println("服務端:"+str); System.out.println("我:"+str); pw.flush(); String clien = br.readLine(); System.out.println("客戶端:"+clien); pw.println("我:"+clien); pw.flush(); } } } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static void main(String[] args) { test3(); } }
執行該程式碼後可通過兩個dos控制檯視窗進行聊天,通過telnet IP地址 埠號 命令如 telnet localhost 6666,我是用eclipse作為伺服器端和SecureCRT作為客戶端進行聊天的。程式碼演示如下圖

執行程式碼後在eclipse顯示如圖:


連線CRT後兩邊的控制檯顯示如下圖:


在伺服器端輸入聊天內容(您好!我是小詢。很高興認識你。。)回車效果如下圖:


在客戶端輸入內容(我也很高興認識你。哈哈),效果如下:


可以一直聊下去。。。嘿嘿。。