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

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

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

    Java世界

    學(xué)習(xí)筆記

    常用鏈接

    統(tǒng)計(jì)

    積分與排名

    天籟村

    新華網(wǎng)

    雅虎

    最新評(píng)論

    簡易的聊天軟件

    用兩個(gè)類來實(shí)現(xiàn),一個(gè)Server類和Client類,在MyEclipse下調(diào)試通過。

    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;
    ?//服務(wù)器端GUI
    ?public Server() {
    ??frame = new JFrame("服務(wù)器端");
    ??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) {
    ?????? // 向客戶端發(fā)送信息
    ?????? try {
    ????????? output.writeObject("服務(wù)器>>>"+message);
    ????????? output.flush();
    ????????? display.append("\n服務(wù)器>>>"+message);
    ?????? }
    ?????? catch (IOException e) {
    ????????? display.append("\n錯(cuò)誤寫入對(duì)象");
    ?????? }
    ??? }
    ? public void runServer() {???
    ?????? try {
    ????????? // 第一步:創(chuàng)建一個(gè)ServerSocket
    ????????? ser = new ServerSocket(5000,100);
    ????????? while(true) {
    ???????? ? counter++;
    ???????????? // 第二步:等待一個(gè)連接
    ???????????? waitForConnection();
    ???????????? // 第三步:獲取接受數(shù)據(jù)
    ???????????? getStreams();
    ???????????? // 第四步:連接處理
    ???????????? processConnection();
    ???????????? // 第五步:關(guān)閉連接
    ???????????? closeConnection();
    ????????? }
    ?????? }catch (IOException e) {
    ????????? e.printStackTrace();
    ?????? }
    ??? }
    ? //等待連接服務(wù)器
    ? private void waitForConnection() throws IOException {
    ?? display.setText("等待連接\n");
    ????? soc = ser.accept();???
    ????? //InetAddress類采用工廠設(shè)計(jì)模式,有三個(gè)靜態(tài)工廠方法,如getHostName or getLocalHost。
    ????? display.append("Socket "+counter+" 接收來至:"+soc.getInetAddress().getHostName());
    ? }
    ??? // 獲取接受數(shù)據(jù)
    ? 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 ="服務(wù)器: 連接成功\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未知對(duì)象類型接收");
    ????????? }
    ?????? } while (!message.equals("客戶端>>>終端"));
    ??? }
    ? //關(guān)閉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("客戶端");
    ????? // 設(shè)置服務(wù)器到客戶端連接
    ????? 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);
    ?? }
    ?? // 連接服務(wù)器處理信息
    ?? public void runClient() {
    ????? try {
    ???????? // 第一步:創(chuàng)建一個(gè)Socket,連接服務(wù)器
    ???????? connectToServer();
    ???????? // 第二步:獲取接受數(shù)據(jù)
    ???????? getStreams();
    ???????? // 第三步:連接處理
    ???????? processConnection();
    ???????? // 第四步:關(guān)閉連接
    ???????? closeConnection();
    ????? }
    ????? catch (IOException e) {
    ???????? e.printStackTrace();
    ????? }
    ?? }
    ?? // 獲取接受數(shù)據(jù)
    ?? private void getStreams() throws IOException {
    ????? output = new ObjectOutputStream(soc.getOutputStream());
    ????? output.flush();?????
    ????? input = new ObjectInputStream(soc.getInputStream());
    ????? display.append("\n獲得I/O流\n");
    ?? }
    ?? // 創(chuàng)建一個(gè)Socket,連接服務(wù)器
    ?? private void connectToServer() throws IOException {?????
    ????? display.setText("連接中\(zhòng)n");
    ????? //InetAddress類采用工廠設(shè)計(jì)模式,有三個(gè)靜態(tài)工廠方法,如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沒有對(duì)象接受");
    ???????? }
    ????? } while (!message.equals("服務(wù)器>>>終端"));
    ?? }?
    ?? // 關(guān)閉連接
    ?? private void closeConnection() throws IOException {
    ????? display.append("\n關(guān)閉連接");
    ????? output.close();
    ????? input.close();
    ????? soc.close();
    ?? }
    ?? // 發(fā)送信息到服務(wù)器
    ?? private void sendData(String message) {
    ????? try {
    ???????? output.writeObject("客戶端>>>"+message);
    ???????? output.flush();
    ???????? display.append("\n客戶端>>>"+message);
    ????? }
    ????? catch (IOException e) {
    ???????? display.append("\n錯(cuò)誤的對(duì)象");
    ????? }
    ?? }
    ?? 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) 評(píng)論(0)  編輯  收藏


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 国产免费无码AV片在线观看不卡| 白白色免费在线视频| 久久免费视频观看| 亚洲日韩精品A∨片无码| 一级特黄录像视频免费| 国产成人99久久亚洲综合精品| 免费看美女午夜大片| 亚洲AⅤ优女AV综合久久久| 国产亚洲综合久久| 亚洲Av无码乱码在线znlu| 免费人成动漫在线播放r18| 久久久亚洲精品蜜桃臀| 国产成年无码久久久免费| 亚洲一本综合久久| 免费观看的毛片大全| 亚洲熟妇AV一区二区三区宅男| 免费看美女被靠到爽| 视频免费1区二区三区| 亚洲精品国产精品乱码不卡√ | 精品亚洲aⅴ在线观看| 日本高清在线免费| 亚洲欧美成人av在线观看| 国产美女精品久久久久久久免费| 免费一级毛suv好看的国产网站| 久久久久亚洲AV成人网人人软件| 精品国产免费一区二区三区香蕉| 久久久久亚洲AV无码永不| 最近免费中文字幕视频高清在线看 | 免费看少妇高潮成人片| 亚洲资源在线视频| 免费观看一级毛片| 久别的草原电视剧免费观看| 亚洲精品午夜视频| 亚洲av高清在线观看一区二区| 99久久99这里只有免费的精品| 亚洲欧洲春色校园另类小说| 四虎永久在线精品免费影视| 久久精品成人免费观看| 亚洲人成小说网站色| 综合亚洲伊人午夜网 | 特级毛片爽www免费版|