我有一个大问题......我们有一个关于学校和工作的项目。我编写了 go 服务器,我的伙伴编写了 java 客户端。我有一个问题,如果他发送类似“Hello World”的内容,golang 服务器会将其拆分为“Hello”和“World”
Java 代码:
public class DataController {
public String recieveDataFromServer(Socket socket) throws Exception {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
while (!bufferedReader.ready()) { }
String data = bufferedReader.readLine();
return data;
}
public void sendDataToServer(Socket socket, String data) throws Exception
{
PrintWriter printWriter = new PrintWriter(socket.getOutputStream(), true);
printWriter.println(data);
}
}
去代码:
func handleRequest(conn net.Conn) {
request := make([]byte, 256)
for {
_, err := conn.Read(request)
if err != nil {
Error.Println(err.Error())
return
}
Info.Println("Message Received: " + string(request))
message := []byte(time.Now().String())
message = append(message, []byte(": ")...)
message = append(message, request...)
broadcast(message)
}
}
广播功能只是对所有连接执行 conn.Write(msg) 。
有谁知道问题出在哪里?
编辑:我发现了问题。Java 在每个单词后添加一个 \r\n。然后 go server 认为消息结束了。我们现在切换到 c#。在使用 bufferedWriter 写入套接字时,它更容易并且工作正确。
米琪卡哇伊
杨__羊羊
相关分类