java从socket读取字符串错误连接重置错误
java.io.BufferedReader br = new java.io.BufferedReader(new java.io.InputStreamReader(is));
String cmd=null;
while(is.available()<1){}
cmd = br.readLine();
System.out.println("cmd: "+cmd);
if(cmd.equals("search")){
String[] param = br.readLine().split(",");
for(String s:param){
System.out.println(s);
}
这是接受服务器发送的字符串的客户端代码。但是在连接重置错误的cmd=br.readLine()...
行中引发了异常
服务器代码是
Socket(InetAddress.getLocalHost(),1234);
OutputStream os = s.getOutputStream();InputStream is=s.getInputStream();
java.io.BufferedWriter bw=new java.io.BufferedWriter(new java.io.OutputStreamWriter(os));
String ss="search";
bw.println(ss);
bw.flush();
System.out.println("search cmded");
String param = "a,*,0,-1";
bw.println(param);
bw.flush();
System.out.println("param sent");
我尝试过使用print writer和bufferedwriter,但都没有正常工作 那么,可能的解决方案是什么呢
还有一件值得一提的事情是im使用了一个侦听器服务,它创建了一个新的服务器代码来处理特定的客户端请求。。。 所以现在可以解决这个问题了
# 1 楼答案
在服务器中,您的
BufferedWriter
名为bw
,但您正在向pw
写入# 2 楼答案
摆脱available()测试。你把它从后到前,反正它是无效的。readLine()将在没有数据时阻塞。只需测试readLine()的返回值是否为null,然后中断