點對點聊天簡陋版

          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)

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 农安县| 襄汾县| 蒙山县| 班玛县| 紫金县| 廊坊市| 民县| 思茅市| 中西区| 南昌县| 咸宁市| 都昌县| 万荣县| 浮山县| 定西市| 桑植县| 南靖县| 鄂托克前旗| 监利县| 镇赉县| 油尖旺区| 九龙坡区| 广宁县| 阿拉善左旗| 新津县| 大余县| 东乡| 呈贡县| 竹山县| 札达县| 海伦市| 项城市| 娱乐| 南陵县| 广州市| 十堰市| 冷水江市| 兴文县| 个旧市| 绥江县| 韶山市|