Java多人聊天源碼_第1頁
Java多人聊天源碼_第2頁
Java多人聊天源碼_第3頁
Java多人聊天源碼_第4頁
Java多人聊天源碼_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論