国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發(fā) > Java > 正文

java實現(xiàn)簡單TCP聊天程序

2024-07-14 08:41:44
字體:
供稿:網(wǎng)友

本文實例為大家分享了java實現(xiàn)TCP聊天程序的具體代碼,供大家參考,具體內(nèi)容如下

服務(wù)端代碼:

package com.test.server; import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.ServerSocket;import java.net.Socket; public class Server {  public static void main(String[] args) { new Server().startServer(); }  public void startServer(){ try {  //服務(wù)器在9990端口監(jiān)聽客戶端的連接  ServerSocket ss = new ServerSocket(9999);  System.out.println("server is listening...");  while(true){  //阻塞的accept方法,當(dāng)一個客戶端連接上,才會返回Socket對象  Socket s = ss.accept();  System.out.println("a client has connected!");  //開啟線程處理通信  new CommunicateThread(s).start();  } } catch (IOException e) {  e.printStackTrace(); } }  public class CommunicateThread extends Thread{  Socket socket; DataInputStream dis; DataOutputStream dos;  public CommunicateThread(Socket socket){  this.socket = socket;  try {  dis = new DataInputStream(socket.getInputStream());  dos = new DataOutputStream(socket.getOutputStream());  } catch (IOException e) {  e.printStackTrace();  } }  @Override public void run() {  super.run();  //讀取客戶端發(fā)過來的消息  String msg = null;  try {  while((msg = dis.readUTF()) != null){   System.out.println("client send msg :" + msg);   String replyMsg = "server reply : " + msg;   dos.writeUTF(replyMsg);   System.out.println("server reply msg :" + replyMsg);  }  } catch (IOException e) {  e.printStackTrace();  } } } }

客戶端代碼:

package com.test.client; import java.io.DataInputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.Socket;import java.util.Scanner; public class Client {  public static void main(String[] args) { new Client().startClient(); }  public void startClient(){ try {  //連接到服務(wù)器  Socket socket = new Socket("localhost", 9999);  DataInputStream dis = new DataInputStream(socket.getInputStream());  DataOutputStream dos = new DataOutputStream(socket.getOutputStream());  Scanner scanner = new Scanner(System.in);  String line = null;  listenServerReply(dis);  while((line = scanner.nextLine()) != null){//讀取從鍵盤輸入的一行  dos.writeUTF(line);//發(fā)給服務(wù)端  System.out.println("client send msg : " + line);  } } catch (Exception e) {  e.printStackTrace(); } }  //監(jiān)聽服務(wù)端回復(fù)的消息 public void listenServerReply(final DataInputStream dis){ new Thread(){  @Override  public void run() {  super.run();  String line = null;  try {   while((line = dis.readUTF()) != null){   System.out.println("client receive msg from server: " + line);   }  } catch (IOException e) {   e.printStackTrace();  }  } }.start(); } }

先啟動服務(wù)端,再啟動客戶端,在客戶端的控制臺輸入消息并回車,就可以發(fā)送消息給客戶端了,客戶端收到消息后,馬上會回復(fù)一個消息

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持VeVb武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到JAVA教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 无为县| 泽州县| 班戈县| 清水县| 信宜市| 哈尔滨市| 田东县| 庆云县| 麻栗坡县| 湟中县| 会东县| 瑞昌市| 大邑县| 岳普湖县| 巫山县| 翼城县| 凭祥市| 都兰县| 塔城市| 唐河县| 台山市| 简阳市| 曲周县| 金乡县| 于都县| 和顺县| 蕲春县| 沿河| 靖江市| 京山县| 民丰县| 宣威市| 通城县| 苍溪县| 安康市| 安仁县| 库尔勒市| 南丰县| 宁南县| 潼关县| 左权县|