java控制臺實現聊天程序
更新時間:2021年07月11日 11:26:32 作者:wuhuizzj
這篇文章主要為大家詳細介紹了java控制臺實現聊天程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本文實例為大家分享了java控制臺實現聊天程序的具體代碼,供大家參考,具體內容如下
發(fā)送端
package ip.chat; import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; public class TalkSend implements Runnable{ DatagramSocket socket = null; BufferedReader reader = null; private int formIP; private String toIP; private int toPort; public TalkSend(int formIP, String toIP, int toPort) { this.formIP = formIP; this.toIP = toIP; this.toPort = toPort; try { socket = new DatagramSocket(); reader = new BufferedReader(new InputStreamReader(System.in)); }catch (Exception e){ e.printStackTrace(); } } @Override public void run() { while (true){ try { String data = reader.readLine(); byte[] datas = data.getBytes(); DatagramPacket packet = new DatagramPacket(datas, 0, datas.length, new InetSocketAddress(this.toIP, this.toPort)); socket.send(packet); if (data.equals("bye")){ break; } }catch (Exception e){ e.printStackTrace(); } } //關閉 socket.close(); } }
服務端
package ip.chat; import java.io.IOException; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.SocketException; public class TalkReceive implements Runnable{ DatagramSocket socket = null; private int port; //設置消息來源 private String msgFrom; public TalkReceive(int port ,String msgFrom) { this.port = port; this.msgFrom = msgFrom; try { socket = new DatagramSocket(port); } catch (SocketException e) { e.printStackTrace(); } } @Override public void run() { while(true){ try { //準備接收包裹 byte[] container = new byte[1024]; DatagramPacket packet = new DatagramPacket(container,0,container.length); socket.receive(packet);//接收包裹 //斷開連接 byte[] data = packet.getData(); String receiveData = new String(data, 0, data.length); System.out.println(msgFrom+":"+receiveData); if (receiveData.equals("bye")){ break; } } catch (IOException e) { e.printStackTrace(); } } socket.close(); } }
學生端代碼
package ip.chat; public class TalkStudent { public static void main(String[] args) { //開啟兩個線程 new Thread(new TalkSend(7777,"localhost",9999)).start(); new Thread(new TalkReceive(8888,"老師")).start(); } }
教師端代碼
package ip.chat; public class TalkTeacher { public static void main(String[] args) { new Thread(new TalkSend(5555,"localhost",8888)).start(); new Thread(new TalkReceive(9999,"學生")).start(); } }
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。
相關文章
SpringBoot整合MinIO實現文件存儲系統的代碼示例
在現代的應用程序中,文件存儲和管理是一個常見的需求,MinIO是一個開源的對象存儲系統,與Spring?Boot框架結合使用,可以快速構建高性能的文件存儲系統,本文將介紹如何使用Spring?Boot和MinIO來實現文件存儲系統2023-06-06如何使用nexus在局域網內搭建maven私服及idea的使用
這篇文章主要介紹了如何使用nexus在局域網內搭建maven私服及idea的使用,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11Java的Comparable,Comparator和Cloneable三大接口詳解
這篇文章主要為大家詳細介紹了Java的Comparable,Comparator和Cloneable的接口,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助2022-03-03java使用dom4j解析xml配置文件實現抽象工廠反射示例
本文主要介紹了java使用dom4j讀取配置文件實現抽象工廠和反射的示例,在Java中也可以同Donet一樣,將差異配置在配置文件里面。另外,我們采用下面的方式實現,將會更加便捷2014-01-01