关于服务器去掉socket.shutdownOutput()接收不到数据

Muyundefeng 2015-12-08 11:29:56
package con.app.download;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.DataInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.net.Socket;

public class AndroidRunable implements Runnable {

Socket socket = null;
Socket socket1=null;

public AndroidRunable(Socket socket) {
this.socket = socket;
this.socket1=socket;
}

@Override
public void run() {
// 向android客户端输出hello worild
String line = null;
InputStream input;
OutputStream output;
String str = "hello world!";
try {

input = socket.getInputStream();

BufferedReader bff = new BufferedReader(
new InputStreamReader(input));

//半关闭socket
socket.shutdownOutput();
//获取客户端的信息
while ((line = bff.readLine()) != null) {
System.out.println("****");
System.out.print(line);
}
output = socket1.getOutputStream();
// output = socket1.getOutputStream();
output.write(str.getBytes("gbk"));
output.flush();
System.out.println(line);
bff.close();
input.close();
socket.close();
socket1.close();
} catch (IOException e) {
e.printStackTrace();
}

}
}
代码如上图所示,我想先从客户端里读取相关的数据,然后根据读取的数据进行判断处理。但是如果把shutdownOutput去掉之后就接收不到数据,这是为什么?(原来的时候如果先发送数据在读取数据可以正常工作,但是如果碰到先读后写怎么办?)各位大神帮帮忙
...全文
460 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

50,541

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧