版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、Java 多人聊天源碼1. ChatApplet.java 類import java.awt.*;import java.awt.event.*;import java.applet.*;import javax.swing.*;import com.borland.jbcl.layout.*;import javax.swing.border.*;import java.io.*;import .*;public class ChatApplet extends JApplet boolean isStandalone = false;BorderLayout borderLayout1 =
2、 new BorderLayout(); Border border1;JPanel jPanel2 = new JPanel();Border border2;BorderLayout borderLayout2 = new BorderLayout();JPanel jPanel1 = new JPanel();JButton buttonSend = new JButton();BorderLayout borderLayout3 = new BorderLayout(); JPanel jPanel3 = new JPanel();Border border3;BorderLayout
3、 borderLayout4 = new BorderLayout();JTextField textTalk = new JTextField();JPanel jPanel4 = new JPanel();Border border4;BorderLayout borderLayout5 = new BorderLayout();JScrollPane jScrollPane1 = new JScrollPane();JTextArea textMessages = new JTextArea();PrintWriter out = null;/*Get a parameter value
4、*/public String getParameter(String key, String def) return isStandalone ? System.getProperty(key, def) : (getParameter(key) != null ? getParameter(key) : def);/*Construct the applet*/public ChatApplet() /*Initialize the applet*/public void init() try jbInit();Client client = new Client(this);if (cl
5、ient.isConnected()out = client.getOutputStream();elseappendMessage(大大的錯(cuò)誤! );catch(Exception e) e.printStackTrace();/*Component initialization*/private void jbInit() throws Exception border1 = BorderFactory.createEmptyBorder(9,9,9,9); border2 = BorderFactory.createEmptyBorder(9,9,9,9); border3 = Bord
6、erFactory.createEmptyBorder(2,0,2,5); border4 = BorderFactory.createEmptyBorder(0,0,5,0); this.setSize(new Dimension(400,300); this.getContentPane().setLayout(borderLayout1); jPanel2.setBorder(border2); jPanel2.setLayout(borderLayout2); buttonSend.setFocusPainted(false); buttonSend.setText( 發(fā) 送 ); b
7、uttonSend.addActionListener(new java.awt.event.ActionListener() public void actionPerformed(ActionEvent e) buttonSend_actionPerformed(e););jPanel1.setLayout(borderLayout3); jPanel3.setBorder(border3);jPanel3.setLayout(borderLayout4); jPanel4.setBorder(border4);jPanel4.setLayout(borderLayout5); textT
8、alk.addKeyListener(new java.awt.event.KeyAdapter() public void keyPressed(KeyEvent e) textTalk_keyPressed(e););this.getContentPane().add(jPanel2, BorderLayout.CENTER); jPanel2.add(jPanel1, BorderLayout.SOUTH); jPanel1.add(buttonSend, BorderLayout.EAST); jPanel1.add(jPanel3, BorderLayout.CENTER); jPa
9、nel3.add(textTalk, BorderLayout.CENTER); jPanel2.add(jPanel4, BorderLayout.CENTER); jPanel4.add(jScrollPane1, BorderLayout.CENTER); jScrollPane1.getViewport().add(textMessages, null);/*Get Applet information*/ public String getAppletInfo() return Applet Information;/*Get parameter info*/public Strin
10、g getParameterInfo() return null;/*Main method*/public static void main(String args) ChatApplet applet = new ChatApplet(); applet.isStandalone = true; JFrame frame = new JFrame(); /EXIT_ON_CLOSE = 3 frame.setDefaultCloseOperation(3); frame.setTitle(Applet Frame); frame.getContentPane().add(applet, B
11、orderLayout.CENTER); applet.init();applet.start();frame.setSize(400,320);Dimension d = Toolkit.getDefaultToolkit().getScreenSize();frame.setLocation(d.width - frame.getSize().width) / 2, (d.height - frame.getSize().height) / 2);frame.setVisible(true);/static initializer for setting look & feelstatic
12、 try UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName();/UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClass Name(); catch(Exception e) public void appendMessage(String message) textMessages.setText(message + textMessages.getText();void buttonSend_actionPerformed(Acti
13、onEvent e) String msg;msg = textTalk.getText().trim();if (msg.equals() | msg = null) return;out.println(textTalk.getText();textTalk.setText();void textTalk_keyPressed(KeyEvent e) if (e.getKeyChar() != n) return; out.println(textTalk.getText(); textTalk.setText();2. ChatServlet.javaimport javax.servl
14、et.*;import javax.servlet.http.*;import java.io.*;import java.util.*;public class ChatServlet extends HttpServlet private static final String CONTENT_TYPE = text/html;/*Initialize global variables*/public void init(ServletConfig config) throws ServletException super.init(config);try new Server();cat
15、ch (IOException ex) System.err.println(IO錯(cuò)誤: );ex.printStackTrace(System.err);destroy();/*Process the HTTP Get request*/ public void doGet(HttpServletRequest request, HttpServletResponse response)throws ServletException, IOException response.setContentType(CONTENT_TYPE); PrintWriter out = response.g
16、etWriter(); out.println(); out.println(ChatServlet); out.println();out.println(The servlet has received a GET. This is the reply.);out.println();/*Clean up resources*/public void destroy() 3. Client.javaimport java.io.*;import .*;public class Client Socket socket = null;private String host;private b
17、oolean connected = false;public boolean isConnected() return connected; public Client(ChatApplet applet) try host = applet.getDocumentBase().getHost();/host = 46;socket = new Socket(host, Server.port);connected = true;new ClientRecieveThread(socket, applet).start(); catch (Exception ex) a
18、pplet.appendMessage(ex.getMessage(); ex.printStackTrace(System.err);public PrintWriter getOutputStream() throws IOException return new PrintWriter(socket.getOutputStream(), true);4. ClientRecieveThread.javaimport java.io.*;import .*;public class ClientRecieveThread extends Thread private ChatApplet
19、applet = null;private Socket socket = null;public ClientRecieveThread(Socket socket, ChatApplet applet) this.socket = socket; this.applet = applet;public void run() BufferedReader in = null;String inputLine;try in = new BufferedReader( new InputStreamReader( socket.getInputStream();while (inputLine
20、= in.readLine() != null) /if (inputLine.equalsIgnoreCase(quit) break; applet.appendMessage(inputLine + n);catch (Exception ex) ex.printStackTrace(System.err);finally Close();void Close() try socket.close();catch (Exception ex) ex.printStackTrace(System.err);5. Protocol.java public class Protocol pri
21、vate String userid;public Protocol(String userid) this.userid = userid;public String processInput(String input) return (userid + : + input);6. Server.javaimport java.io.*;import .*;import java.util.Vector;public class Server private ServerSocket serverSocket = null;public static int port = 4444;priv
22、ate boolean listening = true;Vector clientSockets = new Vector(10);public Server() throws IOException try serverSocket = new ServerSocket(port);catch (Exception ex) + port);System.err.println( 不能監(jiān)聽端口: ex.printStackTrace(System.err); System.exit(-1);System.out.println( 成功監(jiān)聽端口: + port);while (listenin
23、g) addClient(serverSocket.accept();serverSocket.close();來到人的離人public void addClient(Socket socket) throws IOException new ServerThread(socket, this).start(); clientSockets.add(socket);send(歡迎 + socket.getInetAddress().getHostName() + 這里! );System.out.println( 聊天室共有 + clientSockets.size() + );public
24、void removeClient(Socket socket) throws IOException send(歡送 + socket.getInetAddress().getHostName() + 去);clientSockets.remove(socket);System.out.println( 聊天室共有 + clientSockets.size() + );public void send(String msg) throws IOException Socket socket = null;for (int I = 0; I clientSockets.size(); I+)
25、socket = (Socket)(clientSockets.get(I);PrintWriterout = newPrintWriter(socket.getOutputStream(),true);out.println(msg);public static void main(String args) throws IOException new Server(); 7. ServerThread.javapublic class ServerThread extends Thread private Server server = null; private Socket socket = null; private Protocol j
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 變電站值班員專業(yè)(理論)練習(xí)題庫及答案
- DB4113-T 073-2024 獼猴桃主要病蟲害綠色防控技術(shù)規(guī)程
- 操作平臺安全課件
- 2024年新人教版七年級數(shù)學(xué)上冊教學(xué)課件 第六章 幾何圖形初步 6.1.2 點(diǎn)、線、面、體
- 2024年新人教版七年級上冊語文教學(xué)課件 第1單元 1《春》課時(shí)2
- 物業(yè)管理與房產(chǎn)交易及其范例精解:房產(chǎn)交易制度
- 2024年新人教版七年級上冊數(shù)學(xué)課件 5.1.2 等式的性質(zhì)一
- 邊壩縣2025屆數(shù)學(xué)三上期末學(xué)業(yè)質(zhì)量監(jiān)測模擬試題含解析
- SMT品質(zhì)部制程巡檢管理規(guī)范練習(xí)試卷附答案
- 體系審核 管理部分復(fù)習(xí)試題含答案
- 煙草專賣許可證管理辦法試題
- 中國高尿酸及痛風(fēng)行業(yè)市場前景及投資研究報(bào)告:大數(shù)據(jù)分析競爭對手
- 中班語言《我是中國娃》課件
- 3D打印技術(shù)在軍事領(lǐng)域的應(yīng)用
- 初中地理七年級上冊《地圖》課件
- 復(fù)習(xí)專題三-函數(shù)的單調(diào)性
- 咖啡館火災(zāi)安全防范要點(diǎn)
- 長螺旋鉆孔壓灌砼樁施工及質(zhì)量控制技術(shù)范文
- JC/T2055-2020 寵物墊圈用顆粒膨潤土
- 強(qiáng)國有我挺膺擔(dān)當(dāng)
- 校園環(huán)境衛(wèi)生調(diào)查報(bào)告
評論
0/150
提交評論