日期:2014-05-20  浏览次数:20866 次

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



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

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();
        }

    }
}