2011-10-08 117 views
0

我需要构建一个应用程序,其中有四台服务器在运行,一台客户机向这些服务器发送一些软件包,但这些服务器必须始终保持运行,以便从客户端(发件人)接收一些内容。 所以我创建了两个类,客户端和服务器:如何使用套接字创建服务器和客户端?

public class Server { 

    public Event receive(int port) { 

     Evento event = null; 
     try { 
      ServerSocket ss = new ServerSocket(port); 

      Socket s = ss.accept(); 
      InputStream is = s.getInputStream(); 
      ObjectInputStream ois = new ObjectInputStream(is); 

      evento = (Evento) ois.readObject(); 

      is.close(); 
      s.close(); 
      ss.close(); 

     }catch(Exception e){ 
      System.out.println(e); 
     } 

     return event; 
    } 
} 



public class Client { 
    public void send(Event event, int port) { 
     try { 
      Socket s = new Socket("localhost", 2002); 
      OutputStream os = s.getOutputStream(); 
      ObjectOutputStream oos = new ObjectOutputStream(os); 

      oos.writeObject(event); 
      oos.close(); 
      os.close(); 
      s.close(); 

     } catch (Exception e) { 
      System.out.println(e); 
     } 
    } 
} 

但正如我所说,我需要这些服务器保持运行的时间,如果我考过一次,这是确定的,但两次或两次以上,不。 我怎么能这样做?

回答

2

标准模式是为每个连接创建一个线程。如果您使用一个线程,则只能从一个阻塞连接读取。

+0

你的意思了一会儿一个线程? –

+0

用于读取阻塞连接的线程。它可以包含while循环。 –

0

只是在readObject附近添加一个do while块。 正如你可以检查邮件是否是像“退出”休息状态..

欢呼

+0

这不会解决有多台服务器的问题,因为主线程将等待客户端,因此您有1:1服务器到客户端。您需要产生线程以使4个并发服务器运行并接受来自客户端的消息。 – CoolBeans

相关问题