我正在尝试创建客户端写入的TCP客户端(golang)服务器(Java)应用程序,服务器回显此文本并将消息返回给客户端,然后回复客户端 .
Server code (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();
}
}
Client code (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”时停止,即对服务器的写入工作正常,但是对客户端的读回没有 . 知道为什么会这样吗?
1 回答
尝试发送换行符以匹配服务器端的
readLine
语句