誼's Blog|J2EE|

          o(∩_∩)o

          利用java.net.*編寫廣播聊天室

          Client:
          package Chat;
          import java.io.*;
          import java.net.*;
          import java.awt.*;
          import java.awt.event.ActionEvent;
          import java.awt.event.ActionListener;

          import javax.swing.*;

          public class Client {
              JTextArea jta;
              JTextField jtf;
              BufferedReader in;
              PrintWriter out;
              
          private void initGui(){
                  JFrame f
          =new JFrame("Client");
                  f.setSize(
          400,300);
                  f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
                  jta
          =new JTextArea();
                  jta.setEditable(
          false);
                  f.add(
          new JScrollPane(jta));
                  jtf
          =new JTextField();
                  f.add(jtf,
          "South");
                  f.setVisible(
          true);
                  jtf.addActionListener(
          new ActionListener(){
                      
          public void actionPerformed(ActionEvent arg0) {
                          String text
          =jtf.getText();
                          jtf.setText(
          "");
                          out.println(text);
                          out.flush();
                      }
                  });
              }
              
          private void initNet(){
                  
          try {
                      Socket s
          =new Socket("127.0.0.1",8888);
                      out
          =new PrintWriter(s.getOutputStream());
                      in
          =new BufferedReader(
                              
          new InputStreamReader(s.getInputStream()));
                  } 
          catch (Exception e) {
                      e.printStackTrace();
                  }
              }
              
          private void receive(){
                  
          try {
                      
          while(true){
                          String str 
          = in.readLine();
                          
          if(str==null){
                              
          return ;
                          }
                          jta.append(
          ""+str+"\n");
                      }
                  } 
          catch (IOException e) {
                      e.printStackTrace();
                  }
              }
              
          public Client(){
                  initGui();
                  initNet();
              }
              
              
          public static void main(String[] args) throws Exception{
                  Client c
          =new Client();
                  c.receive();
              }
          }

          Server:
          package ChatIV;
          import java.net.*;
          import java.io.*;
          import java.util.*;

          public class Server {
              
          public static void main(String args[]){
                  
          try {
                      ServerSocket ss 
          = new ServerSocket(8888);
                      List sockets 
          = new ArrayList();
                      
          while(true){
                          Socket s 
          = ss.accept();
                          sockets.add(s);
                          Thread t1 
          = new ChatThread(s,sockets);
                          t1.start();
                      }
                  } 
          catch (IOException e) {
                      e.printStackTrace();
                  }
              }
          }
          class ChatThread extends Thread{
              Socket s;
              List sockets;
              
          public ChatThread(Socket s,List sockets){
                  
          this.s=s;
                  
          this.sockets=sockets;
              }
              
          public void run(){
                  
          try {
                      BufferedReader in 
          = new BufferedReader(new InputStreamReader(s.getInputStream()));
                      
          while(true){
                          String str 
          = in.readLine();
                          
          for(int i=0;i<sockets.size();i++){
                              Socket s2 
          = (Socket)sockets.get(i);
                              PrintWriter out 
          = new PrintWriter(s2.getOutputStream());
                              out.println(str);
                              out.flush();
                          }
                      }
                  } 
          catch (IOException e) {
                      e.printStackTrace();
                  }
          finally{
                      
          try {
                          s.close();
                      } 
          catch (IOException e) {
                          e.printStackTrace();
                      }
                  }
              }
          }

          posted on 2008-09-01 20:57 張誼 閱讀(235) 評論(2)  編輯  收藏

          評論

          # re: 利用java.net.*編寫廣播聊天室 2008-09-01 23:31 ∪∩BUG

          可否給些注釋?  回復  更多評論   

          # re: 利用java.net.*編寫廣播聊天室 2008-09-02 00:46 張誼

          @∪∩BUG
          該文章的注釋版本我放到http://www.cnblogs.com/zhangyi85/archive/2008/09/01/1281510.html
          這里了,這兒的博客還沒怎么設置好,先看看這個吧。感謝您的關注。  回復  更多評論   


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


          網站導航:
           

          公告

          [About Me]

          ||關注計算機網絡與軟件研發||
          張誼
          CCNA.DWE.MCP.
          MCSA.MCSE.MCDBA
          中國.四川.成都
          BG8CRV

          導航

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

          統計

          常用鏈接

          留言簿(1)

          隨筆檔案

          搜索

          積分與排名

          最新評論

          主站蜘蛛池模板: 浦江县| 宣化县| 天峨县| 怀来县| 吉隆县| 乌苏市| 宁国市| 呈贡县| 合水县| 鹿邑县| 云南省| 黄大仙区| 尉氏县| 枝江市| 正阳县| 凤阳县| 嘉祥县| 浠水县| 溧阳市| 广昌县| 瓦房店市| 东乌珠穆沁旗| 老河口市| 诸城市| 河东区| 白银市| 翁源县| 无为县| 交城县| 醴陵市| 彰化市| 望奎县| 隆子县| 高唐县| 佛学| 万荣县| 安化县| 灵川县| 玉林市| 荃湾区| 囊谦县|