回覆列表
-
1 # 好美啊PK
-
2 # 13751690583
你好,socket長連線其實是長時間保持服務端與客戶端的連線,這是相對於短連線而言。只要你兩端不主動斷開連線,那麼該socket連線就是一直存在的,就可以收發資料。如果做得合理一點,就是在你不發資料的時候,自定義一個檢測資料包(我們可以稱之為心跳),例如由客戶端定時主動給服務端傳送,這樣服務端收到後就表明,該連線時一直保持的。直到你主動關閉一端,該連線才斷開。
現編這個就是個多執行緒伺服器,只要在client不釋放連線,伺服器端的run裡邊寫while(TRUE)迴圈,那麼就可以長期連線。class ConnectionThread extends Thread{Socket client;int counter;public ConnectionThread(Socket cl,int c){client = cl;counter= c;}@Overridepublic void run(){try{String destIP=client.getInetAddress().toString();int destport =client.getPort();PrintStream outstream=new PrintStream(client.getOutputStream());DataInputStream instream=new DataInputStream(client.getInputStream()); String inline=instream.readLine();}//trycatch(IOException e){System.out.println(e);}}//run