Java如何多次使用来自客户端的传入套接字

时间:2017-03-07 01:34:23

标签: java sockets server connection client

所以我的问题是当套接字连接时,可以创建两个引用1个套​​接字输入流的数据输出流。我想打印出文本和text2,但这不起作用。

客户端代码

public static void main(String[] args) {
    new Sender();
}

public Sender() {
    try {
        Socket sock = new Socket("127.0.0.1",1337);
        DataOutputStream out = new DataOutputStream(sock.getOutputStream());
        out.writeUTF("Test");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

服务器代码

public static void main(String[] args) {
    new Listen();
}

public Listen() {
    Thread thread = new Thread(this);
    thread.start();
}

@Override
public void run() {
    try {
        ServerSocket serversocket = new ServerSocket(1337);
        while(true) {
        Socket socket = serversocket.accept();
        System.out.println(socket.getPort() + ": " + socket.getInetAddress().getHostAddress());
        DataInputStream input = new DataInputStream(socket.getInputStream());
        DataInputStream input2 = new DataInputStream(socket.getInputStream());
            String text = input.readUTF();
            String text2 = input2.readUTF();
            if(text != null) {
            System.out.println(text);
            }
            if(text2 != null) {
            System.out.println(text2);
            }
            //socket.close();
        }
    } catch (IOException e) {
        // TODO Auto-generated catch block
        System.out.println("Error");
    }

1 个答案:

答案 0 :(得分:0)

您需要一个循环,它终止于SCM_RIGHTS。并且不要写这样的代码。取决于先前EOFException块中代码成功的代码应位于try块内。

try

这应该作为后台线程运行,而不是按下按钮。