JAVA涂鸦
关于JAVA的点点滴滴
posts - 50,  comments - 689,  trackbacks - 0
    这是一个比较简单的例子来说明socket编程,服务器端使用了多线程来监听客户端。
   
    服务器端的代码:
    package SocketTest;

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

    class SocketServer{
        public SocketServer(){
            Socket incoming;
            ServerSocket so;
            try{
                so= new ServerSocket(8001);
                System.out.println("等待客户端连接。");
            
                while(true){
                    try{
                        incoming = so.accept( );
                          System.out.println("已连接客户端。");
                          GetInfo gi=new GetInfo(incoming);//调用线程
                     } catch (IOException e){
                        e.printStackTrace();
                     }
                }
            }catch (IOException e){
                 e.printStackTrace();
            }
        }
   
        public static void main(String[] args){
            new SocketServer();
        }
   
        private static class GetInfo implements Runnable{   //线程类
            private Socket incoming;
            private String s=null;
            private BufferedReader b;
            Thread t;
       
            public GetInfo(Socket incoming){
                try{
                    this.incoming=incoming;
                    b=new BufferedReader(new InputStreamReader(incoming.getInputStream()));
               
                    t=new Thread(this);
                    t.start();
                }catch(IOException e){
                    e.printStackTrace();
                }   
            }
       
            public void run(){
                try{
                    while (true){
                        s=b.readLine();
                        System.out.println(s);
                        if(s.equals("end")){
                            break;
                        }
                    } 
                }catch(IOException e){
                    e.printStackTrace();
                }
            }
        }
      
     }


    客户端的代码:
    package SocketTest;

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

    public class SocketClient{
   
       public static void main(String[] args){
      
               try{
                  Socket so = new Socket("localhost", 8001);
                  System.out.println("连接服务器。");
             
                  BufferedReader b=new BufferedReader(new InputStreamReader(System.in));
                   
                  OutputStream outStream = so.getOutputStream();
                  PrintWriter out = new PrintWriter(outStream);
       
                  String s=null;
                  while (true){
                    s=b.readLine();
                    out.println("Client:"+s);
                    out.flush();
                    if(s.equals("end")){
                         break;
                    }    
                  }
            }catch (IOException e){
              e.printStackTrace();
            }
       }
    }



posted on 2005-10-10 14:04 千山鸟飞绝 阅读(2672) 评论(2)  编辑  收藏 所属分类: J2SE

FeedBack:
# re: 多线程实现对多个客户端的监听.[未登录]
2010-03-02 23:07 | 清风
兄弟 我也成功实现了 谢了  回复  更多评论
  
# re: 多线程实现对多个客户端的监听.[未登录]
2014-08-23 17:59 | 哼哼
@清风
抄谁不会
  回复  更多评论
  

只有注册用户登录后才能发表评论。


网站导航:
 
正在阅读:



<2024年3月>
252627282912
3456789
10111213141516
17181920212223
24252627282930
31123456

常用链接

留言簿(35)

随笔档案

文章分类

文章档案

好友的blog

我的其他blog

老婆的Blog

搜索

  •  

积分与排名

  • 积分 - 771285
  • 排名 - 55

最新评论

阅读排行榜

评论排行榜