誼'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)

          隨筆檔案

          搜索

          積分與排名

          最新評論

          主站蜘蛛池模板: 马龙县| 和静县| 确山县| 青铜峡市| 富民县| 泰兴市| 周宁县| 阳原县| 大安市| 孝义市| 龙游县| 兴宁市| 乐东| 白沙| 石家庄市| 芜湖市| 新建县| 连城县| 会昌县| 塔河县| 黔西| 江北区| 鄂州市| 汶上县| 弥勒县| 淅川县| 闵行区| 林周县| 视频| 云梦县| 阜宁县| 乌苏市| 玉山县| 古浪县| 嵩明县| 故城县| 浙江省| 郑州市| 鄢陵县| 崇阳县| 施秉县|