<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
使用socket實現區域網聊天,寫這個主要是為了深入理解socket與資訊流在網路中的傳送過程加深理解。
程式碼很簡單分為兩個類,一個伺服器類,一個使用者端,執行時分別啟動兩個執行緒一個負責接受另一個負責傳送。
整體流程是 兩臺機器分別啟動程式,一個選擇主動連線 另一個選擇被動接受,即可實現類似qq的聊天效果兩個人可以同時傳送訊息。
注意的事,不要在同一臺電腦上同時啟動兩個,這樣會伺服器端和使用者端的ip都是相同很有可能造成自己傳送的訊息自己接受到了,可以兩臺電腦或者虛擬機器器裡面進行。
伺服器端:
package com.server; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.ServerSocket; import java.net.Socket; import com.client.RunClient; public class RunServer { public static Socket socket=null; /** * 建立伺服器被動連線 * @throws IOException */ public void startServer() throws IOException { //伺服器接收資料 ServerSocket serverSocekt=new ServerSocket(8888); System.out.println("伺服器啟動,等待連線..."); //建立使用者端執行緒 RunClient rc=new RunClient(); Thread rct=new Thread(rc); rct.start(); //阻塞執行緒 監聽埠建立socket對談 RunServer.socket=serverSocekt.accept(); //獲取輸入留 InputStream is=socket.getInputStream(); //將位元組輸入流轉換成字元輸入流 InputStreamReader isr=new InputStreamReader(is); //將字元輸入流裝入帶緩衝的輸入流中 BufferedReader br=new BufferedReader(isr); String str=null; while((str=br.readLine())!=null){ System.out.print("輸出資訊:"+str); } socket.shutdownInput(); serverSocekt.close(); } }
使用者端:
package com.client; import java.io.BufferedWriter; import java.io.OutputStream; import java.io.OutputStreamWriter; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; import com.server.RunServer; public class RunClient implements Runnable { @Override public void run() { // TODO Auto-generated method stub Scanner input = new Scanner(System.in); System.out.println("1、主動連線n2、被動等待"); String sign=input.next(); switch (sign) { case "1": try { System.out.println("輸入伺服器IP:"); startClient(input.next()); } catch (Exception e) { e.printStackTrace(); } break; case "2": try { startClient(); } catch (Exception e) { e.printStackTrace(); } break; default: break; } } /** * 由已經建立的socket 進行連線反向連 * @throws Exception * @throws UnknownHostException */ public void startClient() throws Exception{ while(true){ try { if(RunServer.socket!=null){ break; } Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } // 與伺服器建立連線 Socket socket=new Socket(RunServer.socket.getInetAddress().getHostAddress(), 8888); System.out.println("連線建立成功..."); //向伺服器寫入流 OutputStream os=socket.getOutputStream(); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os)); Scanner input=new Scanner(System.in); while(true){ System.out.println("輸入資訊:"); bw.write(input.next()); bw.newLine(); bw.flush(); } } /** * 通過IP與伺服器建立連線 * @throws Exception * @throws UnknownHostException */ public void startClient(String ip) throws Exception{ // 與伺服器建立連線 Socket socket=new Socket(ip, 8888); System.out.println("連線建立成功..."); //向伺服器寫入流 OutputStream os=socket.getOutputStream(); BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(os)); Scanner input=new Scanner(System.in); while(true){ bw.write(input.next()); bw.newLine(); bw.flush(); } } }
main:
package com.start; import com.server.RunServer; public class Go { public static void main(String[] args) throws Exception { // TODO Auto-generated method stub RunServer rs=new RunServer(); rs.startServer(); } }
效果:我是用虛擬機器器加本機
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45