Java,将数据发送到不同的IP

时间:2013-02-26 17:55:29

标签: java networking

我正在制作一个简单的聊天客户端以获得乐趣,我让服务器/客户端工作并完美地发送数据。我想知道如何将数据发送给选定的用户。选择部分我可以解决,但我不知道如何将事情发送到选定的IP。到目前为止,这是我的服务器。

package Server;

import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @class Connect
 * @date Feb 25, 2013 10:14:00 PM
 * @author Zach
 */

public class Connect { //Server
    public static void main(String[] args) throws IOException {
        ServerSocket server = new ServerSocket(43595);

        while (server.isBound()) {

            Socket s = server.accept();
            DataOutputStream out = new DataOutputStream(s.getOutputStream());
            DataInputStream in = new DataInputStream(s.getInputStream());

            int length = in.read();
            byte[] data = new byte[length];
            in.read(data);
            String str = new String(data, "UTF-8");

            s.close();
        }
    }
}

我想将信息从服务器重定向到特定客户端

2 个答案:

答案 0 :(得分:1)

创建一个接受套接字的数组,在你的情况下从“s”套接字,然后你可以循环它以找到发送数据的客户端。

答案 1 :(得分:0)

创建一个处理每个客户端的类:

public class ClientHandler {

Socket connection;
DataInputStream in;
DataOutputStream out;

public ClientHandler(Socket s) {
    connection = s;
}
public void startup() throws IOException {
    in = new DataInputStream(connection.getInputStream());
    out = new DataOutputStream(connection.getOutputStream());
    out.flush();
}

public void sendMessage(byte[] message) throws IOException {
    out.write(message);
}

}

在您的服务器中放置一个List并为每个ClientHandler分配一个ID,然后您可以遍历您的List,如果ID匹配,请在客户端上使用sendMessage()。

我建议您使用缓冲区作为输入和输出,因为它们更有效。 我还建议您在服务器类中使用线程,尤其是在处理多个客户端时。