<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Java世界

    學習筆記

    常用鏈接

    統計

    積分與排名

    天籟村

    新華網

    雅虎

    最新評論

    簡易的聊天軟件

    用兩個類來實現,一個Server類和Client類,在MyEclipse下調試通過。

    Server類:
    /**
    ?* 聊天軟件Server程序段
    ?* @author Rabbit
    ?* @version 0.9 2007-11-6
    ?*/
    package com.sinojava.three;
    import java.io.*;
    import java.net.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Server {
    ?private JFrame frame;
    ?private JTextField enter;
    ?private JTextArea display;
    ?private ObjectOutputStream output;
    ?private ObjectInputStream input;
    ?private ServerSocket ser;
    ?private Socket soc;
    ?private Container container;
    ?private int counter = 0;
    ?//服務器端GUI
    ?public Server() {
    ??frame = new JFrame("服務器端");
    ??container = frame.getContentPane();
    ??enter = new JTextField();
    ??enter.setEnabled(false);
    ??enter.addActionListener(new ActionListener() {
    ???public void actionPerformed(ActionEvent e) {
    ????sendData(e.getActionCommand());
    ???}
    ??});
    ??container.add(enter,BorderLayout.NORTH);
    ??display = new JTextArea();
    ??container.add(new JScrollPane(display),BorderLayout.CENTER);
    ??frame.setSize(400,400);
    ??frame.setVisible(true);
    ??frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ?}
    ?private void sendData(String message) {
    ?????? // 向客戶端發送信息
    ?????? try {
    ????????? output.writeObject("服務器>>>"+message);
    ????????? output.flush();
    ????????? display.append("\n服務器>>>"+message);
    ?????? }
    ?????? catch (IOException e) {
    ????????? display.append("\n錯誤寫入對象");
    ?????? }
    ??? }
    ? public void runServer() {???
    ?????? try {
    ????????? // 第一步:創建一個ServerSocket
    ????????? ser = new ServerSocket(5000,100);
    ????????? while(true) {
    ???????? ? counter++;
    ???????????? // 第二步:等待一個連接
    ???????????? waitForConnection();
    ???????????? // 第三步:獲取接受數據
    ???????????? getStreams();
    ???????????? // 第四步:連接處理
    ???????????? processConnection();
    ???????????? // 第五步:關閉連接
    ???????????? closeConnection();
    ????????? }
    ?????? }catch (IOException e) {
    ????????? e.printStackTrace();
    ?????? }
    ??? }
    ? //等待連接服務器
    ? private void waitForConnection() throws IOException {
    ?? display.setText("等待連接\n");
    ????? soc = ser.accept();???
    ????? //InetAddress類采用工廠設計模式,有三個靜態工廠方法,如getHostName or getLocalHost。
    ????? display.append("Socket "+counter+" 接收來至:"+soc.getInetAddress().getHostName());
    ? }
    ??? // 獲取接受數據
    ? private void getStreams() throws IOException {
    ????? output = new ObjectOutputStream(soc.getOutputStream());
    ????? output.flush();
    ????? input = new ObjectInputStream(soc.getInputStream());
    ????? display.append("\n獲得I/O流\n");
    ? }
    ??? // 連接處理
    ? private void processConnection() throws IOException {
    ????? String message ="服務器: 連接成功\n";
    ????? output.writeObject(message);
    ????? output.flush();
    ????? enter.setEnabled(true);
    ????? do {
    ????????? try {
    ???????????? message = (String)input.readObject();
    ???????????? enter.setText(null);
    ???????????? display.append("\n"+message);
    ???????????? display.setCaretPosition(display.getText().length());
    ????????? }
    ????????? catch(ClassNotFoundException e) {
    ???????????? display.append("\n未知對象類型接收");
    ????????? }
    ?????? } while (!message.equals("客戶端>>>終端"));
    ??? }
    ? //關閉Socket
    ? private void closeConnection() throws IOException {
    ????? display.append("\n用戶終端連接");
    ????? enter.setEnabled(false);
    ????? output.close();
    ????? input.close();
    ????? soc.close();
    ? }
    ? public static void main(String args[]) {
    ?? Server server = new Server();
    ?? server.runServer();
    ? }
    }

    Client類:
    /**
    ?* 聊天軟件Client程序段
    ?* @author Rabbit
    ?* @version 0.9 2007-11-6
    ?*/
    package com.sinojava.three;
    import java.io.*;
    import java.net.*;
    import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    public class Client {
    ?? private JFrame frame;
    ?? private JTextField enter;
    ?? private JTextArea display;
    ?? private ObjectOutputStream output;
    ?? private ObjectInputStream input;
    ?? private String message = "";
    ?? private String chatServer;
    ?? private Socket soc;
    ?? private Container container;
    ?? // 客戶端GUI
    ?? public Client(String host) {
    ????? frame = new JFrame("客戶端");
    ????? // 設置服務器到客戶端連接
    ????? chatServer = host;
    ????? container = frame.getContentPane();
    ????? enter = new JTextField();
    ????? enter.setEnabled(false);
    ????? enter.addActionListener(new ActionListener() {
    ??????????? public void actionPerformed(ActionEvent e) {
    ?????????????? sendData(e.getActionCommand());???????????
    ??????????? }
    ???????? });
    ????? container.add(enter,BorderLayout.NORTH);
    ????? display = new JTextArea();
    ????? container.add(new JScrollPane(display),BorderLayout.CENTER);
    ????? frame.setSize(400,400);
    ????? frame.setVisible(true);
    ????? frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    ?? }
    ?? // 連接服務器處理信息
    ?? public void runClient() {
    ????? try {
    ???????? // 第一步:創建一個Socket,連接服務器
    ???????? connectToServer();
    ???????? // 第二步:獲取接受數據
    ???????? getStreams();
    ???????? // 第三步:連接處理
    ???????? processConnection();
    ???????? // 第四步:關閉連接
    ???????? closeConnection();
    ????? }
    ????? catch (IOException e) {
    ???????? e.printStackTrace();
    ????? }
    ?? }
    ?? // 獲取接受數據
    ?? private void getStreams() throws IOException {
    ????? output = new ObjectOutputStream(soc.getOutputStream());
    ????? output.flush();?????
    ????? input = new ObjectInputStream(soc.getInputStream());
    ????? display.append("\n獲得I/O流\n");
    ?? }
    ?? // 創建一個Socket,連接服務器
    ?? private void connectToServer() throws IOException {?????
    ????? display.setText("連接中\n");
    ????? //InetAddress類采用工廠設計模式,有三個靜態工廠方法,如getByName。
    ????? soc = new Socket(InetAddress.getByName(chatServer),5000);
    ????? display.append("連接到:"+soc.getInetAddress().getHostName());
    ?? }
    ?? // 連接處理
    ?? private void processConnection() throws IOException {
    ????? enter.setEnabled(true);
    ????? do {
    ???????? try {
    ??????????? message = (String)input.readObject();
    ??????????? enter.setText("");
    ??????????? display.append("\n"+message);
    ??????????? display.setCaretPosition(display.getText().length());
    ???????? }
    ???????? catch (ClassNotFoundException e) {
    ??????????? display.append("\n沒有對象接受");
    ???????? }
    ????? } while (!message.equals("服務器>>>終端"));
    ?? }?
    ?? // 關閉連接
    ?? private void closeConnection() throws IOException {
    ????? display.append("\n關閉連接");
    ????? output.close();
    ????? input.close();
    ????? soc.close();
    ?? }
    ?? // 發送信息到服務器
    ?? private void sendData(String message) {
    ????? try {
    ???????? output.writeObject("客戶端>>>"+message);
    ???????? output.flush();
    ???????? display.append("\n客戶端>>>"+message);
    ????? }
    ????? catch (IOException e) {
    ???????? display.append("\n錯誤的對象");
    ????? }
    ?? }
    ?? public static void main(String args[]) {
    ????? Client client = new Client("127.0.0.1");
    ????? client.runClient();
    ?? }
    }?

    ?


    ?

    posted on 2007-11-06 15:27 Rabbit 閱讀(350) 評論(0)  編輯  收藏


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产亚洲视频在线观看| 456亚洲人成在线播放网站| 一本久久免费视频| 亚洲 国产 图片| 永久免费观看黄网站| 老司机亚洲精品影视www| 二个人看的www免费视频| 亚洲线精品一区二区三区| 在线观看免费黄网站| 亚洲AV无码精品色午夜在线观看| 日韩免费在线观看视频| 亚洲黄色在线电影| 国内精品乱码卡1卡2卡3免费 | 特级毛片免费观看视频| 亚洲精品网站在线观看不卡无广告 | 两个人的视频高清在线观看免费| 亚洲中文字幕AV每天更新| 日韩在线天堂免费观看| 男人和女人高潮免费网站| 亚洲AV无码欧洲AV无码网站| **毛片免费观看久久精品| 亚洲中文字幕久久无码| 亚洲av麻豆aⅴ无码电影| 麻豆精品不卡国产免费看| 亚洲一区二区三区精品视频| 国产精品无码素人福利免费| www永久免费视频| 97久久精品亚洲中文字幕无码| 手机看黄av免费网址| 美女尿口扒开图片免费 | 亚洲丰满熟女一区二区v| 日本免费中文字幕在线看| 99久久免费国产精精品| 亚洲午夜一区二区电影院| 免费国产在线观看| 精品无码人妻一区二区免费蜜桃| 亚洲jizzjizz少妇| 亚洲国产精品一区| 免费中文字幕在线观看| 在线免费观看你懂的| 男女男精品网站免费观看 |