套接字服务器,我没有收到我的服务器发送的消息

时间:2014-05-27 12:16:00

标签: java sockets

我有一个客户端 - 服务器连接..

当我的服务器连接到客户端时,它必须通过输出流发送消息,然后在从inputStream接收消息时打印它。但是当客户端连接时,我会收到"已连接的"消息,但我没有看到"这是一条短信\ n"发送了我的服务器

这是我的服务器:

public class Server1 extends JFrame{
    static JTextArea testoarea;
    static Socket socket;
    static ServerSocket server;

    public Server1(){
        testoarea = new JTextArea();
        add(new JScrollPane(testoarea));
        setSize(600, 700);
        setVisible(true);
    }

    public static void main(String[] args) {
        Server1 server1 = new Server1();
        server1.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        inizzializza();
        connetti();
    }


    private static void inizzializza(){
        try {
            server = new ServerSocket(7100);
            showMessage("Server Iniziato\n");
        } catch (IOException e) {
            System.out.println(e);
        }   
    }


    private static void connetti() {
        try {
            socket = server.accept();
            showMessage("Connected \n"); 

            PrintWriter output = new PrintWriter(socket.getOutputStream());
            BufferedReader input = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            output.println("this is a Test message\n");
            showMessage(input.readLine().toString()); 
            output.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }



    private static void showMessage(final String text) {
        // TODO Auto-generated method stub
        SwingUtilities.invokeLater(
            new Runnable() {
                public void run() {
                    testoarea.append(text);
                }
            }
        );
    }
}

这是我得到的: enter image description here

1 个答案:

答案 0 :(得分:0)

您的input.readLine()位于服务器端客户端输入流中。这意味着它会尝试从客户端中读取收入消息

如果您不想阅读服务器从客户端发送到客户端的消息(我认为您想要,但我可能会被误解)。您必须获取客户端套接字输入流。 你得到的地方可能在某个地方打电话:

Socket clientSocket = new Socket("localhost", 7100);