JAVA 网络编程如何与多线程结合???
列如:
两个类client和server分别为客户端和服务器。如何用多线程的方法实现客户端、服务器端同时可以收、发信息??

解决方案 »

  1.   

    我想弱弱的问下,java网络编程主要用在什么地方呢?
      

  2.   

    Server端每个Client放在一个线程里
    如果不想使用线程,也可以使用nio
      

  3.   

    我个人觉得是这样的:由server实时侦听由client 发来的connect消息,一旦收到一个client 发来的connect请求,server就 生成一个线程,而自己则回到wait状态, 那个线程完全负责与对应client的通信,至于同步,主要是可以让server和client共享一些数据,两者都可以修改这些数据,就构成了同步。
      

  4.   

    Server端:package org.exam4;import java.net.*;
    import java.io.*;public class T4Server { public static void main(String[] args) throws Exception {
    ServerSocket server = new ServerSocket(5678);
    while (true) {
    Socket s = server.accept();
    MyThread t = new MyThread(s);
    t.start();
    }
    }
    }class MyThread extends Thread {
    Socket s; public MyThread(Socket s) {
    this.s = s;
    } public void run() {
    BufferedReader in;
    try {
    in = new BufferedReader(new InputStreamReader(s.getInputStream())); PrintWriter out = new PrintWriter(s.getOutputStream(), true);
    String line = null;
    while ((line = in.readLine()) != null) {
    out.println("Receive");
    }
    s.close();
    } catch (IOException e1) {
    e1.printStackTrace();
    } }
    }Client端:package org.exam4;import java.io.BufferedReader;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;public class T4Client { public static void main(String[] args)throws Exception {
    Socket s = new Socket("localhost",5678);
    BufferedReader in = new BufferedReader(new InputStreamReader(s.getInputStream()));
    PrintWriter out = new PrintWriter(s.getOutputStream(), true);
    BufferedReader keyin = new BufferedReader(new InputStreamReader(System.in));
    String line ;
    while((line=keyin.readLine())!=null){
    if("End".equals(line)){
    s.close();
    }
    else{
    out.println(line);
    System.out.println(in.readLine());
    }
    }
    }}