黑马程序员技术交流社区
标题:
客户端传送线程阻塞
[打印本页]
作者:
flying
时间:
2014-2-18 17:15
标题:
客户端传送线程阻塞
public class Client {
public void run(){
try {
Socket socket=new Socket("127.0.0.1",9090);
//创建对象输入流
ObjectInputStream in=
new ObjectInputStream(socket.getInputStream());
ObjectOutputStream out=
new ObjectOutputStream(socket.getOutputStream());
System.out.println("请输入字符串:");
Scanner sc =new Scanner(System.in);
String s=sc.next();
out.writeObject(s);
out.flush();
s=(String)in.readObject();
System.out.println("服务器返回的字符串:");
System.out.print(s);
in.close();
out.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}catch(ClassNotFoundException e){
e.printStackTrace();
}
}
public static void main(String[] args) {
Client client=new Client();
client.run();
}
}
复制代码
代码如上 可以和服务器建立连接 但是无法传送数据,网上说是线程阻塞 但不明白为什么会阻塞
作者:
flying
时间:
2014-2-18 17:16
变量out和变量in的位置改变一下就可以 但是具体原因是什么?
作者:
长石
时间:
2014-2-18 17:20
在out.flush(); 下面加一行
socket.shutdownOutput();
告诉服务器数据传完了 才能继续走代码
作者:
flying
时间:
2014-2-18 17:28
还是不行
这句话 System.out.println("请输入字符串:");
根本就没运行 阻塞是在
ObjectInputStream in=
new ObjectInputStream(socket.getInputStream());
ObjectOutputStream out=
new ObjectOutputStream(socket.getOutputStream());
作者:
flying
时间:
2014-2-18 17:30
in和out的前后位置改变一下就可以 但是就是不明白为什么要改变位置
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2