gpt4 book ai didi

java - 从服务器向客户端发送响应

转载 作者:行者123 更新时间:2023-12-01 17:29:35 26 4
gpt4 key购买 nike

我想在客户端连接后向他发送响应

这是代码片段

try {

while (true)

{
in = socket.getInputStream();
out = socket.getOutputStream();

byte[] reception = new byte[1024];
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int read = in.read(reception);

String bufferServer = "Buffer Server ";
baos.write(reception, 0, read);
reception = baos.toByteArray();
String chaine = new String(reception, "Cp1252");
System.out.println("Reception from client : " + chaine);

byte[] bufferServeurToClient = bufferServer.getBytes();
out.write(bufferServeurToClient); // send to client
out.flush();
}
}

客户端可以发送多个请求,这就是为什么我使用 while(true) 来监听请求,直到客户端断开连接。

问题是我没有从客户端的服务器收到任何信息。如果我删除 while(true) 它会起作用并且我在客户端收到变量“bufferServeurToClient”

编辑:客户端现在可以工作,但是当我打印响应时,我的字符串后面有很多奇怪的字符(正方形),为什么?

String ip = InetAddress.getLocalHost ().getHostAddress ();
Socket socket = new Socket(ip, port);
System.out.println("SOCKET = " + socket);

InputStream in = socket.getInputStream();
BufferedInputStream bis = new BufferedInputStream(in);
OutputStream out = socket.getOutputStream();
BufferedOutputStream bos=new BufferedOutputStream(out);
String bufferClient="Buffer Client ";

byte[] bufferClientToServer= bufferClient.getBytes();
out.write(bufferClientToServer);

byte[] reception = new byte[1024] ;

int read;

while ((read = bis.read(reception)) != -1){
String chaine = new String( reception , "Cp1252" );
System.out.println("Reception from server: " + chaine);


}
bis.close();
bos.close();

}

感谢您的帮助

最佳答案

The clients can send multiple request, that's why I use a while(true) in order to listen requests until client disconnect.

如果客户端可以发送多个请求,您将需要一种区分它们的方法 - 响应之间的区别。目前,您只是假设对 read 的一次调用即可完成这项工作:

int read =in.read(reception);

它可以读取请求的部分,或者可能读取多个请求。解决此问题的常见选项是使用某种分隔符(例如,每个文本行一个请求)或使用长度前缀,其中(例如)每个请求或响应的前四个字节表示还有多少数据。

现在你根本没有显示你的客户端是什么样子 - 但我的猜测是你实际上正在等待服务器关闭连接,当然你永远不会在 while 时这样做(true) 循环存在。这是您需要修改的另一段代码。

关于java - 从服务器向客户端发送响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12353677/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com