Java聊天室之解決連接超時(shí)問(wèn)題
一、題目描述
題目實(shí)現(xiàn):在進(jìn)行網(wǎng)絡(luò)編程時(shí),由于進(jìn)行網(wǎng)絡(luò)連接是比較消耗資源的,因此,可以對(duì)連接的等待時(shí)間進(jìn)行設(shè)置,如果在規(guī)定的時(shí)間沒(méi)有進(jìn)行連接,則進(jìn)行其他的處理。運(yùn)行程序,等待10秒鐘后,將彈出消息框提示連接超時(shí)。
二、解題思路
創(chuàng)建一個(gè)類:ConnectionTimeoutSetFrame,繼承JFrame類
寫(xiě)一個(gè)getserver()方法,創(chuàng)建服務(wù)ServerSocket和設(shè)置等待超時(shí)時(shí)間。
原理是通過(guò)ServerSocket的實(shí)例對(duì)象,調(diào)用setSoTimeout()設(shè)置超時(shí)時(shí)間。
三、代碼詳解
ConnectionTimeoutSetFrame
package com.xiaoxuzhu; import java.awt.BorderLayout; import java.io.*; import java.net.*; import javax.swing.JFrame; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTextArea; /** * Description: * * @author xiaoxuzhu * @version 1.0 * * <pre> * 修改記錄: * 修改后版本 修改人 修改日期 修改內(nèi)容 * 2022/5/31.1 xiaoxuzhu 2022/5/31 Create * </pre> * @date 2022/5/31 */ public class ConnectionTimeoutSetFrame extends JFrame { private JTextArea ta_info; private ServerSocket server; // 聲明ServerSocket對(duì)象 public void getserver() { try { server = new ServerSocket(9527); // 實(shí)例化Socket對(duì)象 server.setSoTimeout(10000);// 設(shè)置連接超時(shí)時(shí)間為10秒 ta_info.append("服務(wù)器套接字已經(jīng)創(chuàng)建成功\n"); // 輸出信息 while (true) { // 如果套接字是連接狀態(tài) ta_info.append("等待客戶機(jī)的連接......\n"); // 輸出信息 server.accept();// 等待客戶機(jī)連接 } } catch (SocketTimeoutException e) { ta_info.append("連接超時(shí)......"); JOptionPane.showMessageDialog(null, "連接超時(shí)......"); } catch (IOException e) { e.printStackTrace(); } } public static void main(String[] args) { // 主方法 ConnectionTimeoutSetFrame frame = new ConnectionTimeoutSetFrame(); // 創(chuàng)建本類對(duì)象 frame.setVisible(true); frame.getserver(); // 調(diào)用方法 } public ConnectionTimeoutSetFrame() { super(); setTitle("設(shè)置等待連接的超時(shí)時(shí)間"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBounds(100, 100, 336, 257); final JScrollPane scrollPane = new JScrollPane(); getContentPane().add(scrollPane, BorderLayout.CENTER); ta_info = new JTextArea(); scrollPane.setViewportView(ta_info); } }
10秒后,會(huì)提示連接超時(shí)。
到此這篇關(guān)于Java聊天室之解決連接超時(shí)問(wèn)題的文章就介紹到這了,更多相關(guān)Java聊天室內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
spring-boot項(xiàng)目啟動(dòng)遲緩異常排查解決記錄
這篇文章主要為大家介紹了spring-boot項(xiàng)目啟動(dòng)遲緩異常排查解決記錄,突然在本地啟動(dòng)不起來(lái)了,表象特征就是在本地IDEA上運(yùn)行時(shí),進(jìn)程卡住也不退出,應(yīng)用啟動(dòng)時(shí)加載相關(guān)組件的日志也不輸出2022-02-02Springboot項(xiàng)目打包如何將依賴的jar包輸出到指定目錄
公司要對(duì)springboot項(xiàng)目依賴的jar包進(jìn)行升級(jí),但是遇到一個(gè)問(wèn)題,項(xiàng)目打包之后,沒(méi)辦法看到他里面依賴的jar包,版本到底是不是升上去了,沒(méi)辦法看到,下面通過(guò)本文給大家分享Springboot項(xiàng)目打包如何將依賴的jar包輸出到指定目錄,感興趣的朋友一起看看吧2024-05-05intelij?idea?2023創(chuàng)建java?web項(xiàng)目的完整步驟
這篇文章主要給大家介紹了關(guān)于intelij?idea?2023創(chuàng)建java?web項(xiàng)目的完整步驟,該教學(xué)主要針對(duì)各位剛剛接觸javaweb開(kāi)發(fā)的小伙伴,各位學(xué)習(xí)java的朋友也難免會(huì)經(jīng)歷這個(gè)階段,需要的朋友可以參考下2023-10-10Java嵌套for循環(huán)的幾種常見(jiàn)優(yōu)化方案
這篇文章主要給大家介紹了關(guān)于Java嵌套for循環(huán)的幾種常見(jiàn)優(yōu)化,在Java中優(yōu)化嵌套for循環(huán)可以通過(guò)以下幾種方式來(lái)提高性能和效率,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07JDK?version和class?file?version(Class編譯版本號(hào))對(duì)應(yīng)關(guān)系解讀
這篇文章主要介紹了JDK?version和class?file?version(Class編譯版本號(hào))對(duì)應(yīng)關(guān)系,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07Java使用jacob將微軟office中word、excel、ppt轉(zhuǎn)成pdf
這篇文章主要為大家詳細(xì)介紹了Java使用jacob將微軟office中word、excel、ppt轉(zhuǎn)成pdf,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-12-12Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之棧和隊(duì)列
這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)學(xué)習(xí)之棧和隊(duì)列,文中有非常詳細(xì)的代碼示例,對(duì)正在學(xué)習(xí)java的小伙伴們有一定的幫助,需要的朋友可以參考下2021-05-05java 多線程的幾種實(shí)現(xiàn)方法總結(jié)
這篇文章主要介紹了java 多線程的幾種實(shí)現(xiàn)方法總結(jié)的相關(guān)資料,希望通過(guò)本文能幫助到大家,讓大家掌握java多線程的知識(shí),需要的朋友可以參考下2017-10-10Java并發(fā) CompletableFuture異步編程的實(shí)現(xiàn)
這篇文章主要介紹了Java并發(fā) CompletableFuture異步編程的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01