2014-03-05 29 views
0

客户端A如何向客户端B和B发送消息,如何向服务器S发送消息?还有如何在A和B之间进行通信?我试过并解决了双方(即单个客户端和单个服务器)的问题。我尝试过以下方法:在Socket编程中,A,B和S如何在java中进行通信?

//Server 
public class DateServer { 

    public static void main(String[] args) throws IOException { 
     ServerSocket listener = new ServerSocket(9090); 
     try { 
      while (true) { 
       Socket socket = listener.accept(); 
       System.out.println("Waiting for client on port " + 
        listener.getLocalPort() + "..."); 

       try { 
        PrintWriter out = 
         new PrintWriter(socket.getOutputStream(), true); 
        out.println(new Date().toString()); 
       } finally { 
        socket.close(); 
       } 
      } 
     } finally { 
      listener.close(); 
     } 
    } 
} 

//Client 
public class DateClient { 
    public static void main(String[] args) throws IOException { 
     String serverAddress = JOptionPane.showInputDialog(
      "Enter IP Address of a machine that is\n" + 
      "running the date service on port 9090:"); 
     Socket s = new Socket(serverAddress, 9090); 
     BufferedReader input = 
      new BufferedReader(new InputStreamReader(s.getInputStream())); 
     String answer = input.readLine(); 
     JOptionPane.showMessageDialog(null, answer); 
     //System.exit(0); 
     System.out.println(answer); 
    } 
} 

java socket编程中客户端之间的通信如何进行。但我不明白A,B和S之间的通信是如何发生的。我尝试了太多但没有成功。我在等待最佳答案

+1

在这种情况下,“B”应该是你的服务器,“A”和“C”应该是你的客户端 –

+0

套接字用于将数据从一个地方发送到另一个地方。由于有几乎无限的可能的实现和设计,因此您需要制定出如何实现目标的最佳方案。当您遇到特定问题时,请随时返回并询问相关问题。 –

+0

我的主要问题是客户端向客户端B发送消息,然后B从A发送消息并将其消息发送到服务器S.还发送消息给A。这是我必须实现的架构。 – Ganesh

回答

2

使用MultiThreading概念。您可以在服务器中创建两个线程以接受来自A和B的传入连接。您需要在服务器中为客户端A和B打开两个端口。

+0

客户端A和客户端B之间的通信如何进行 – Ganesh

+0

如果A想与B通信,A需要将消息发送给服务器,服务器将消息传递给B. –

+0

我的主要问题是客户端A发送消息给客户端B,然后B发送来自A的消息和他的消息到服务器S. S发送消息给B。同时B发送消息给A。这是我必须实现的架构。 – Ganesh

0

该架构取决于您的需要。如果你想建立从X到Y的连接,那么Y需要有一个监听端口。因此B需要监听传入的连接。就像S. S需要监听传入的流量一样

请注意,这只是一种情况。架构将取决于您的要求。

相关问题