點對點聊天簡陋版

          CharServer.java
          import?java.net.*;
          import?java.util.*;
          import?java.io.*;

          public?class?ChatServer
          {
          ????ServerSocket?server?
          =?null;
          ????ArrayList
          <ClientConn>?clients?=?new?ArrayList<ClientConn>();
          ????
          ????
          public?ChatServer(int?port)?throws?Exception
          ????
          {
          ????????server?
          =?new?ServerSocket(port);
          ????}

          ????
          ????
          public?void?startServer()?throws?Exception
          ????
          {
          ????????
          while(true)
          ????????
          {
          ????????????Socket?s?
          =?server.accept();
          ????????????clients.add(?
          new?ClientConn(s)?);
          ????????}

          ????}

          ????
          ????
          class?ClientConn?implements?Runnable
          ????
          {
          ????????Socket?s?
          =?null;
          ????????
          public?ClientConn(Socket?s)
          ????????
          {
          ????????????
          this.s?=?s;
          ????????????(
          new?Thread(this)).start();
          ????????}

          ????????
          ????????
          public?void?send(String?str)?throws?IOException
          ????????
          {
          ????????????DataOutputStream?dos?
          =?new?DataOutputStream(s.getOutputStream());
          ????????????dos.writeUTF(str);
          ????????}

          ????????
          ????????
          public?void?run()
          ????????
          {
          ????????????
          try?{
          ????????????????
          ????????????????DataInputStream?dis?
          =?new?DataInputStream(s.getInputStream());
          ????????????????String?str?
          =?dis.readUTF();
          ????????????????
          while(str?!=?null?&&?str.length()?!=0)
          ????????????????
          {
          ????????????????????System.out.println(str);
          ????????????????????
          for(Iterator<ClientConn>?it?=?clients.iterator();?it.hasNext();?)
          ????????????????????
          {
          ????????????????????????ClientConn?cc?
          =?(ClientConn)it.next();
          ????????????????????????
          if(this?!=?cc)????
          ????????????????????????
          {
          ????????????????????????????cc.send(str);
          ????????????????????????}

          ????????????????????}

          ????????????????????str?
          =?dis.readUTF();
          ????????????????}

          ????????????????s.close();
          ????????????????clients.remove(
          this);
          ????????????}
          ?
          ????????????
          catch?(IOException?e)?
          ????????????
          {
          ????????????????System.out.println(
          "client?quit");
          ????????????????
          try?
          ????????????????
          {
          ????????????????????
          if(s?!=?null)
          ????????????????????????s.close();
          ????????????????????clients.remove(
          this);
          ????????????????}
          ?
          ????????????????
          catch?(IOException?ioe)
          ????????????????
          {
          ????????????????????ioe.printStackTrace();
          ????????????????}

          ????????????}

          ????????????
          ????????}

          ????}

          ????
          ????
          public?static?void?main(String[]?args)?throws?Exception
          ????
          {
          ????????ChatServer?cs?
          =?new?ChatServer(6666);?//實例化一個服務器
          ????????cs.startServer();????//啟動服務器
          ????}

          }


          ChatClient.java
          import?java.io.*;
          import?java.net.*;
          import?java.awt.*;
          import?java.awt.event.*;

          public?class?ChatClient?extends?Frame
          {
          ????TextArea?ta?
          =?new?TextArea();
          ????TextField?tf?
          =?new?TextField();
          ????
          public?void?launchFrame()?throws?Exception
          ????
          {
          ????????
          this.add(ta,?BorderLayout.CENTER);
          ????????
          this.add(tf,?BorderLayout.SOUTH);
          ????????tf.addActionListener(
          ????????????
          new?ActionListener()?
          ????????????
          {
          ????????????????
          public?void?actionPerformed(ActionEvent?ae)
          ????????????????
          {
          ????????????????????
          try?{
          ????????????????????????String?sSend?
          =?tf.getText();
          ????????????????????????
          if(sSend.trim().length()?==?0)?return;
          ????????????????????????ChatClient.
          this.send(sSend);
          ????????????????????????tf.setText(
          "");
          ????????????????????????ta.append(sSend?
          +?"\n");
          ????????????????????}

          ????????????????????
          catch?(Exception?e)?{?e.printStackTrace();?}
          ????????????????}

          ????????????}

          ????????????);
          ????????
          ????????setBounds(
          300,300,300,400);
          ????????setVisible(
          true);
          ????????tf.requestFocus();
          ????}

          ????
          ????Socket?s;
          ????
          public?ChatClient()?throws?Exception
          ????
          {
          ????????s?
          =?new?Socket("127.0.0.1",?6666);
          ????????launchFrame();
          ????????(
          new?Thread(new?ReceiveThread(s))).start();
          ????}

          ????
          ????
          public?void?send(String?str)?throws?Exception
          ????
          {
          ????????DataOutputStream?dos?
          =?new?DataOutputStream(s.getOutputStream());
          ????????dos.writeUTF(str);
          ????}

          ????
          ????
          public?void?disconnect()?throws?Exception
          ????
          {
          ????????s.close();
          ????}

          ????
          ????
          public?static?void?main(String[]?args)?throws?Exception
          ????
          {
          ????????BufferedReader?br?
          =?new?BufferedReader?(
          ????????????????????????????????
          new?InputStreamReader(System.in));
          ????????ChatClient?cc?
          =?new?ChatClient();
          ????????String?str?
          =?br.readLine();
          ????????
          while(str?!=?null?&&?str.length()?!=?0)
          ????????
          {
          ????????????cc.send(str);
          ????????????str?
          =?br.readLine();
          ????????}

          ????????cc.disconnect();
          ????}

          ????
          ????
          class?ReceiveThread?implements?Runnable
          ????
          {
          ????????
          private?Socket?s;

          ????????
          public?ReceiveThread(Socket?s)?{
          ????????????
          this.s?=?s;
          ????????}


          ????????
          public?void?run()
          ????????
          {
          ????????????
          if(s?==?null)?return;
          ????????????
          try?{
          ????????????????DataInputStream?dis?
          =?new?DataInputStream(s.getInputStream());
          ????????????????String?str?
          =?dis.readUTF();
          ????????????????
          while?(str?!=?null?&&?str.length()?!=?0)
          ????????????????
          {
          ????????????????????ChatClient.
          this.ta.append(str?+?"\n");
          ????????????????????str?
          =?dis.readUTF();
          ????????????????}

          ????????????}
          ?
          ????????????
          catch?(Exception?e)
          ????????????
          {
          ????????????????e.printStackTrace();
          ????????????}

          ????????????
          ????????}

          ????}

          }

          posted on 2008-09-15 01:30 nonels 閱讀(631) 評論(2)  編輯  收藏 所屬分類: J2SE

          評論

          # re: 點對點聊天簡陋版 2015-12-21 23:54 更多時候該

          來個人更好的更好  回復  更多評論   

          # re: 點對點聊天簡陋版 2015-12-21 23:55 更多時候該

          @更多時候該
          543543   回復  更多評論   

          <2015年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類(16)

          隨筆檔案(16)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 宣城市| 奉贤区| 宁都县| 蚌埠市| 辉南县| 志丹县| 涟水县| 偃师市| 五指山市| 肇州县| 奉新县| 四川省| 江华| 枣强县| 曲周县| 繁峙县| 平阳县| 北安市| 明水县| 莫力| 千阳县| 叙永县| 宝应县| 安康市| 昌乐县| 新沂市| 天柱县| 利津县| 伊吾县| 赫章县| 阳曲县| 瓮安县| 图们市| 柯坪县| 驻马店市| 五大连池市| 嘉鱼县| 泽普县| 涿州市| 奉化市| 丹阳市|