[英]EchoServer (Java) not returning message back to client (golang)
我正在嘗試創建客戶端在其中寫入的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”上停頓,即對服務器的寫入工作正常,但對客戶端的回讀則不行。 知道為什么會這樣嗎?
嘗試發送換行符以匹配服務器端的readLine
語句
strEcho := "Hello\n"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.