freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

java程序設(shè)計(jì)課程設(shè)計(jì)報(bào)告-簡易聊天室系統(tǒng)-資料下載頁

2025-07-18 02:20本頁面

【導(dǎo)讀】讀、編制和調(diào)試一定規(guī)模的Java程序的水平。天那么簡單,其它的功能也非常強(qiáng)大?;贘ava語言在網(wǎng)絡(luò)編程中的廣泛應(yīng)用與我們。基本每時(shí)每刻都在接觸的聊天系統(tǒng)。我選擇嘗試對一簡單的聊天系統(tǒng)進(jìn)行開發(fā)。對面的交談彼此之間沒有界限,沒有差別,只有心與心的共振。它沒有壓抑,只有爭論,就是心靈之間的一種平臺。也是另一種交友的一種重要方。缺少它你會(huì)感覺沒什么,但是你一旦有了它你會(huì)發(fā)現(xiàn)它是那么的重要。在信息社中,信息是第一手資料,人們聊天也是信息的傳播。曾經(jīng)的會(huì)議及面談已

  

【正文】 。 public class ChatServer extends JFrame implements ActionListener {//監(jiān)聽接口 //實(shí)現(xiàn)單擊 “ 發(fā)送 ” 按鈕的事件處理 //繼承窗口類,作為服務(wù)器端口 private JSplitPane splitPaneV,splitPaneH。 //JSplitPane 一個(gè)分隔為兩部分的面板容器,可水平或垂直分隔 private JScrollPane spCenter,spRight。 private JPanel pdown。 private JTextArea txtContent。 private JLabel lblSend。 private JTextField txtSend。 private JButton btnSend。 private DefaultMutableTreeNode root。//樹組件 private DefaultTreeModel model。 private JTree tree。 //消息服務(wù)套接字 private ServerSocket msgServerSocket。 //用戶服務(wù)套接字 private ServerSocket userServerSocket。 private ArrayListSocket msgSocket = new ArrayListSocket()。 private ArrayListPrintWriter printWriter = new 《 Java 程序設(shè)計(jì) 》課程設(shè)計(jì)報(bào)告 42 ArrayListPrintWriter()。 private ArrayListBufferedReader bufferedReader = new ArrayListBufferedReader()。 private LinkedListString msgList = new LinkedListString()。 private ArrayListSocket userSocket = new ArrayListSocket()。 private ArrayListPrintWriter printUser = new ArrayListPrintWriter()。 private ArrayListObjectInputStream readUser = new ArrayListObjectInputStream()。 private ArrayListUser userList = new ArrayListUser()。 //定義一個(gè)全局變量,控制線程是否運(yùn)行,初始值為 true private static boolean isRun = true。 //以上是在類中聲明所需要樹、服務(wù)套接字及集合的具體代碼 public ChatServer()throws Exception{//構(gòu)造方法 super(服務(wù)器 )。 txtContent=new JTextArea()。 (false)。 spCenter =new JScrollPane(txtContent)。 pdown=new JPanel()。 lblSend=new JLabel(系統(tǒng)消息 :)。 txtSend=new JTextField(20)。 btnSend=new JButton(發(fā)送 )。 (lblSend)。 (txtSend)。 (btnSend)。 (this)。//監(jiān)聽 發(fā)送。。 。 《 Java 程序設(shè)計(jì) 》課程設(shè)計(jì)報(bào)告 43 root = new DefaultMutableTreeNode(目前在線用戶 (用戶名:昵稱 ))。 model = new DefaultTreeModel(root)。 tree = new JTree(model)。 spRight = new JScrollPane(tree)。 splitPaneV=new JSplitPane(,spCenter,pdown)。 //垂直分割 (420)。 //設(shè)置分隔條的位置 (1)。 //指定當(dāng)分隔面板改變大小時(shí)如//何讓分配額外的空間 ,默認(rèn)值 0 表示右邊底部的組件獲得所有額外 //空間, 1 表示左邊 /頂部的組件獲得所有額外空間 splitPaneH=new JSplitPane(,splitPaneV, spRight)。//創(chuàng)建一個(gè)水平分割面板 splitPaneV 放左邊, spRight 放//右邊 (400)。 //設(shè)置分隔條的位置 (1)。 //指定當(dāng)分隔面板 表示左邊 /頂部的 //組件獲得所有額外空間 (splitPaneH)。 (600,500)。 ()。 (new WindowEventHandle())。// msgServerSocket = new ServerSocket( ((msgport)))。 userServerSocket = new ServerSocket ( ((userport)))。 //啟動(dòng)接受用戶套接字的線程 new AcceptUserSocketThread().start()。 //啟動(dòng)接受消息套接字的線程 《 Java 程序設(shè)計(jì) 》課程設(shè)計(jì)報(bào)告 44 new AcceptMsgSocketThread().start()。 //啟動(dòng)發(fā)送消息的線程 new SendMessageThread().start()。 } //事件處理方法 監(jiān)聽接口 public void actionPerformed(ActionEvent e) { if (() == btnSend) { String str = ()。 if (!()) { (系統(tǒng)消息: + str)。 } } } //接受客戶端發(fā)送的有關(guān)用戶套接字的線程 接受客服端發(fā)送的有關(guān)有用客戶套接字的線程 class AcceptUserSocketThread extends Thread { public void run () { while (isRun) { try { Socket socket = ()。 ObjectInputStream readerFromClient = new ObjectInputStream( ())。 PrintWriter printToClient = new PrintWriter( 《 Java 程序設(shè)計(jì) 》課程設(shè)計(jì)報(bào)告 45 ())。 (printToClient)。 User user = (User) ()。 if (user != null) { (user)。 //在根節(jié)點(diǎn)下添加一個(gè)新節(jié)點(diǎn) (new DefaultMutableTreeNode( + : + ))。 //刷新樹 (model)。 ()。 //調(diào)用 sendUserListToCilent() 方法向所有客戶端發(fā)送目前所//有用戶信息 sendUserListToClient ()。 } } catch (Exception e) { ()。 } } } } //向所有客戶端發(fā)送目前所有用戶信息 private void sendUserListToClient () { String people = 。 for (int i = 0。 i ()。 i++) { people += amp。 + (i).nickName + amp。 + (i).headImg。 《 Java 程序設(shè)計(jì) 》課程設(shè)計(jì)報(bào)告 46 } for (int i = 0。 i ()。 i++) { if ((i) != null) { try { (i).println(people)。 (i).flush()。 } catch (Exception e) { ()。 } } } } //接受客戶端發(fā)送的有關(guān)消息套接字的線程 接受客戶端發(fā)送的有關(guān)消息套接字的線程 class AcceptMsgSocketThread extends Thread { public void run() { while (isRun) { try { Socket socket = ()。 BufferedReader bufferedFromClient = new BufferedReader( new InputStreamReader(()))。 PrintWriter printWriterToClient = new PrintWriter( ())。 (printWriterToClient)。 (bufferedFromClient)。 //啟動(dòng)接受此客戶發(fā)送聊天信息的線程 new GetMessageThread(bufferedFromClient).start()。 《 Java 程序設(shè)計(jì) 》課程設(shè)計(jì)報(bào)告 47 } catch (Exception e) { ()。 } } } } //接收客戶發(fā)送聊天信息的線程 class GetMessageThread extends Thread { private String stringFromClient = null。 private BufferedReader bufferedReaderFromClient。 public GetMessageThread(BufferedReader buffer) throws Exception { bufferedReaderFromClient = buffer。 } public void run() { try { do { stringFromClient = ()。 (stringFromClient)。 } while (!().endsWith(bye))。 int index = (bufferedReaderFromClient)。 (index)。 (index)。 } catch (Exception e) { ()。 } } 《 Java 程序設(shè)計(jì) 》課程設(shè)計(jì)報(bào)告 48 } //向所有客戶端發(fā)送消息的線程 class SendMessageThread extends Thread { public SendMessageThread() throws Exception { super ()。 } public void run() { while (isRun) { try { String s = null。 if (!()) { s = (String) ()。 (s + \n)。 for (int i = 0。 i ()。 i++) { if ((i) != null) { (i).println(s)。 (i).flush()。 } } } else { sleep(100)。//休眠 } } catch (Exception e) { ()。 } } } 《 Java 程序設(shè)計(jì) 》課程設(shè)計(jì)報(bào)告 49 } //窗體監(jiān)聽類 class WindowEventHandle extends WindowAdapter { //當(dāng)窗體關(guān)閉時(shí),停止所有通信線程 public void WindowClosing (WindowEvent e) { isRun =
點(diǎn)擊復(fù)制文檔內(nèi)容
研究報(bào)告相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1