【问题标题】:EchoServer (Java) not returning message back to client (golang)EchoServer(Java)没有将消息返回给客户端(golang)
【发布时间】:2015-03-31 21:11:33
【问题描述】:

我正在尝试创建一个 TCP 客户端 (golang) 服务器 (Java) 应用程序,客户端在其中写入,服务器回显此文本并将消息返回给客户端,客户端随后回显回复。

服务器代码(Java):

public static void main(String[] args) throws Exception {

    int port = 4444;
    ServerSocket serverSocket = new ServerSocket(port);
    System.err.println("Started server on port " + port);

    while (true) {
        Socket clientSocket = serverSocket.accept();
        System.err.println("Accepted connection from client");

        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        String s;
        while ((s = in.readLine()) != null) {
            out.println(s);
            System.out.println(s);

        }

        System.err.println("Closing connection with client");
        out.close();
        in.close();
        clientSocket.close();
    }
}

客户端代码(golang):

package main

import (
    "net"
    "os"
)

func main() {
    strEcho := "Hello"
    servAddr := "localhost:4444"
    tcpAddr, err := net.ResolveTCPAddr("tcp", servAddr)
    if err != nil {
        println("ResolveTCPAddr failed:", err.Error())
        os.Exit(1)
    }

    conn, err := net.DialTCP("tcp", nil, tcpAddr)
    if err != nil {
        println("Dial failed:", err.Error())
        os.Exit(1)
    }

    _, err = conn.Write([]byte(strEcho))
    if err != nil {
        println("Write to server failed:", err.Error())
        os.Exit(1)
    }

    println("write to server = ", strEcho)

    reply := make([]byte, 1024)
    _, err = conn.Read(reply)

    if err != nil {
        println("Write to server failed:", err.Error())
        os.Exit(1)
    }

    println("reply from server=", string(reply))

    conn.Close()
}

当我启动 Java 服务器然后运行 ​​Go 应用程序时,服务器说连接已被接受(即“已接受来自客户端的连接”)但从未将回显返回给客户端。客户端停在“写入服务器 = Hello”,即写入服务器工作正常,但回读客户端却没有。知道为什么会这样吗?

【问题讨论】:

    标签: java tcp go tcpclient tcpserver


    【解决方案1】:

    尝试发送换行符以匹配服务器端的readLine 语句

    strEcho := "Hello\n"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-16
      • 2020-11-22
      • 1970-01-01
      相关资源
      最近更新 更多