點對點聊天簡陋版

          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 閱讀(633) 評論(2)  編輯  收藏 所屬分類: J2SE

          評論

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

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

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

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

          <2008年9月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          導航

          統計

          常用鏈接

          留言簿(2)

          隨筆分類(16)

          隨筆檔案(16)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 三亚市| 荆门市| 阳山县| 庆阳市| 鄂温| 新邵县| 扶余县| 内黄县| 汝城县| 景宁| 博白县| 通州区| 长治市| 马公市| 吉安县| 仪陇县| 和田市| 北流市| 平塘县| 明水县| 宁晋县| 桦川县| 咸丰县| 孟州市| 游戏| 肥东县| 托里县| 保德县| 沁水县| 青神县| 通化县| 马尔康县| 连城县| 保德县| 武胜县| 奉新县| 韶山市| 阳泉市| 岳阳市| 醴陵市| 建宁县|