1、要求客户端能够判断是否有网络,客户端是否连接到服务端。
2、服务端同一时间内只能和一个客户端通信,此时,其他客户端试图与服务端连接时会有"已有其他用户连接"的提示,并断开连接。
3、如果采用多线程,必须考虑线程安全性客户端断开连接时,服务端要关闭线程和客户端的连接,释放资源。否则,此条不做考虑。
有代码参考最好。

解决方案 »

  1.   

    貌似想用tcp写,不过没有看出有什么问题来,写自己写下试试,如果单纯的client<->server,没有什么难点。
      

  2.   

    think in java(chm 不到一M的那个),自己下下来,看看网络编程那章,如果还是写不出来,可以再来发贴,如果说这个程序有难点的话,估计就是
    对象的序列化和thread这两个地方算是难点,socket在你的应用中很简单。
      

  3.   

    package Server;import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.ServerSocket;
    import java.net.Socket;public class Server { /**
     * @author lybjust
     */
    private ServerSocket serverSocket;
    private Socket socket;
    private BufferedReader in;
    private PrintWriter out; public Server() {
    try {
    serverSocket = new ServerSocket(10000);
    while (true) {
    socket = serverSocket.accept();
    String remoteIP = socket.getInetAddress().getHostAddress();
    String remotePort = ";" + socket.getLocalPort();
    System.out.println("a client come in~~IP:" + remoteIP
    + remotePort);
    in = new BufferedReader(new InputStreamReader(socket
    .getInputStream()));
    String line = in.readLine();
    System.out.println("client send message is:" + line);
    out = new PrintWriter(socket.getOutputStream(), true);
    out.println("you message received~~");
    out.close();
    in.close();
    socket.close();
    }
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    new Server();
    }}
    package Client;import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.PrintWriter;
    import java.net.Socket;
    import java.net.UnknownHostException;public class Client { /**
     * @author lybjust
     */
    private Socket socket;
    private BufferedReader in;
    private PrintWriter out; public void Client() {
    try {
    System.out.println("Try to Connect to 127.0.0.1:10000");
    socket = new Socket("127.0.0.1", 10000);
    System.out.println("The Server Connected!");
    System.out.println("Please enter some Character:");
    in = new BufferedReader(new InputStreamReader(System.in));
    String line = in.readLine();
    out = new PrintWriter(socket.getOutputStream());
    out.print(line);
    BufferedReader br = new BufferedReader(new InputStreamReader(socket
    .getInputStream()));
    String ln = br.readLine();
    System.out.println(ln);
    } catch (UnknownHostException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    } catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }
    } public static void main(String[] args) {
    // TODO Auto-generated method stub
    new Client();
    }}
      

  4.   

    多线程的话用ThreadGroup就可以,将实际的处理线程都加入到组里,接到连接请求判断组的大小,大于1的话返回,"已有其他用户连接"的提示,并断开连接;小于1加入组中,进行处理。