有问题的代码流程: ServerSocket serverSocket = new ServerSocket(8000);
Socket socket = serverSocket.accept(); InputStream is = socket.getInputStream();
//接收输入流操作
is.close();
OutputStream os = socket.getOutputStream();
//输出返回值os.write();
os.close();
socket.close();
没问题的流程: ServerSocket serverSocket = new ServerSocket(8000);
Socket socket = serverSocket.accept(); InputStream is = socket.getInputStream();
//接收输入流操作
OutputStream os = socket.getOutputStream();
//输出返回值os.write(); is.close();
os.close();
socket.close();
就这样的看,我真看不出个所以然,但是确实前者能完成返回消息,后者可以返回,求明白!socket getInputStreamgetOutputStreamclose
Socket socket = serverSocket.accept(); InputStream is = socket.getInputStream();
//接收输入流操作
is.close();
OutputStream os = socket.getOutputStream();
//输出返回值os.write();
os.close();
socket.close();
没问题的流程: ServerSocket serverSocket = new ServerSocket(8000);
Socket socket = serverSocket.accept(); InputStream is = socket.getInputStream();
//接收输入流操作
OutputStream os = socket.getOutputStream();
//输出返回值os.write(); is.close();
os.close();
socket.close();
就这样的看,我真看不出个所以然,但是确实前者能完成返回消息,后者可以返回,求明白!socket getInputStreamgetOutputStreamclose
解决方案 »
- (接口源文件)怎样让Ant编译生成的字节码带实际参数信息,不是arg0之类
- 找不到符号
- 用命令行执行,出现找不到MovementListener符号的错误,请高人指点
- 各位大虾帮我看下有什么好点的方法从33个数中选6组合,并放到一个数组中
- SWT + JMF
- 运行时把对象和调用函数关联起来的过程叫什么来着?
- 请问java大牛,在java中是否有鼠标拖动控件,控件随着鼠标移动,直到放下的api??谢谢
- 请问,怎样才能让我的java程序像其他程序一样在桌面上双击打开并运行?
- 高手请进来讨论——如何在java中,用static和final来破坏封装性
- 高手哪里去了?分不够再加!!!
- 代理的应用
- 这两个程序有什么本质的区别
客户端同理:这个块和第一个块对应的,是开始使用的一对,然后出问题。Socket socket=new Socket(地址,端口)OutputStream os = socket.getOutputStream();
//输出返回值os.write();
os.close();InputStream is = socket.getInputStream();
//接收输入流操作
is.close();socket.close();
然后改用现在这个,正常:Socket socket=new Socket(地址,端口)OutputStream os = socket.getOutputStream();
//输出返回值os.write();
InputStream is = socket.getInputStream();
//接收输入流操作
is.close();
os.close();
socket.close();自己感觉似乎输入输出流以关闭一个,然后socket就不正常工作了,进入源码看了下,但是没看出个所以然关系,所以求理解开始写时候很简单考虑服务端ServerSocket不关,accept阻塞到,一直有消息了,socket开始处理客户端先输出一句,所以服务端就接一句,所以服务先输入流,接完因为只要返回客户端一句,这个段就结束了,所以觉得接收完输入流就可以关闭了,然后给输出流,然后关闭,然后socket关闭。对应的客户端就是先开输出流,发完关闭,然后接对应的输入流,接完关闭,然后关闭socket但是实践到这样干不行不明白为什么。
Socket socket = serverSocket.accept();
InputStream is = socket.getInputStream();
is.close();
System.out.println(socket.isClosed());
其实你关闭stream的时候,socket也关闭了。
This class implements server sockets. A server socket waits for requests to come in over the network. It performs some operation based on that request, and then possibly returns a result to the requester.
大概设计者的意思是说,这是个全双工的通讯,Server端的职责是响应请求,所以一个流关闭,则socket也没办法工作了
谢谢,全双工的通讯 一句足矣,自己能力不足无法看明白socket,但有这句加上以前网络方面的基础,理解了!