我正在一个POC上,服务器将向客户端发送多条消息,并且客户端应接收到该消息并打印该消息。 但是服务器正确发送了邮件,但客户端无法接收。
我已经尝试过for循环10次迭代,而while将终止,然后客户端从服务器接收消息。
这两个都是类:
import java.net.*;
import java.io.*;
public class Client {
public static void main(String gg[]){
try{
Socket socket = new Socket("localhost",8080);
System.out.println("Client Started...");
InputStream is = socket.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
StringBuffer sb = new StringBuffer();
int x;
while(true){
x = isr.read();
if(x=='\n'){
break;
}
sb.append((char)x);
System.out.println("Readable Message: "+sb);
}
}catch(Exception e){
e.printStackTrace();
}
}
}
import java.net.*;
import java.io.*;
public class Server {
public static void main(String gg[]){
try{
ServerSocket ss = new ServerSocket(8080);
Socket socket = ss.accept();
System.out.println("Server Started...");
OutputStream os = socket.getOutputStream();
OutputStreamWriter osw = new OutputStreamWriter(os);
String message = "Hello";
int i=1;
while(true){
osw.write(message+i);
osw.flush();
System.out.println("Server written.:"+message+i);
Thread.sleep(200);
i++;
}
}catch(Exception e){
e.printStackTrace();
}
}
}
这是我停止服务器后来自客户端的错误消息。
C:\harsh\java\book2>java Client
Client Started...
java.net.SocketException: Connection reset
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:210)
at java.base/java.net.SocketInputStream.read(SocketInputStream.java:141)
at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.base/sun.nio.cs.StreamDecoder.read0(StreamDecoder.java:127)
at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:112)
at java.base/java.io.InputStreamReader.read(InputStreamReader.java:168)
at Client.main(Client.java:23)
当我停止服务器时,服务器上的迭代次数增加到100。
由于它是POC的一部分,因此服务器永远不会停止并且将始终发送消息,这可能会有些延迟,但是会从循环中发送消息。
除了接收服务器端发送的所有消息外,我都是这样。
我在服务器上使用冲洗尝试添加另一组图像后,我希望将其输出为非金字塔类型的单个字符串。例如,第一次迭代将发送“ Hello1”。因此它应接收“ Hello1”不是那个金字塔。