`
cczzyc
  • 浏览: 23134 次
社区版块
存档分类
最新评论

系统间消息通信 socket

阅读更多

今天学习了一下系统间通信的方式之一,socket。Socket  ServerSocket 是类似于管道通信的,一个Socket对应一个ServerSocket,为了解决多个客户端Socket 与ServrSocket通信,需要使用多线程。我是一名初学者,大家勿喷。代码如下:

服务端代码:

public class MultiUser extends Thread {

    private Socket client;
   
   
    public MultiUser(Socket c){
        this.client = c;
    }
   
    public void run(){
       
        try {
            BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
           
            PrintWriter out = new PrintWriter(client.getOutputStream());
           
            while(true){
               
                String str = in.readLine();
               
                System.out.println("客户端输入:"+str);
               
                out.println("服务端已经收到");
               
                out.flush();
               
                if(str.equals("end")){
                    break;
                }
               
            }
            client.close();
           
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
       
    }

   
   
 
    public static void main(String[] args) throws IOException {
       
        ServerSocket ss = new ServerSocket(3333);
       
        while(true){
            MultiUser mu = new MultiUser(ss.accept());
            mu.start();
        }
       

    }

}

客户端代码:

public class SocketClinetTest {

    /**
     * @param args
     * @author zcc
     * @throws IOException
     * @throws UnknownHostException
     * @date 2016-7-27上午10:56:18
     */
    public static void main(String[] args) throws UnknownHostException, IOException {
        //接收服务端
        Socket server = new Socket(InetAddress.getLocalHost(),3333);
       
        //写
        BufferedReader in = new BufferedReader(new InputStreamReader(server.getInputStream()));
       
        //读
        PrintWriter out = new PrintWriter(server.getOutputStream());
       
        //键盘录入
       
        BufferedReader wt = new BufferedReader(new InputStreamReader(System.in));

        while(true){
            String str =wt.readLine();
           
            out.println(str);
           
            //刷新内存缓冲区
            out.flush();
           
            if(str.equals("end")){
                break;
            }
            System.out.println("服务端传递的值:"+in.readLine());
        }
       
        server.close();
    }

}

0
1
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics