黑马程序员技术交流社区
标题:
TCP文件复制上传。
[打印本页]
作者:
刘圣伟
时间:
2012-8-23 16:53
标题:
TCP文件复制上传。
package NET;
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
public class TextClient2 {
/**
* @param args
*/
public static void main(String[] args) {
Socket s= null;
try {
s = new Socket("127.0.0.1",10006);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader bufr = null;
PrintWriter out = null;
try {
bufr = new BufferedReader(
new FileReader("d:\\demo.txt"));
out = new PrintWriter(s.getOutputStream(),true);
// DataOutputStream dos = new DataOutputStream(s.getOutputStream());
/*//定义时间标记
long time = System.currentTimeMillis();
// out.println(time);
dos.writeLong(time);
*/
} catch (FileNotFoundException e) {
e.printStackTrace();
}catch (IOException e) {
e.printStackTrace();
}
String line = null;
try {
while((line=bufr.readLine())!=null){
out.println(line);
}
// out.close();
这个地方为什么不能通过关闭这个socket的,输出流来结束文件的复制呢,s.shutdownOutput()不也是关闭操作码?
s.shutdownOutput();//关闭客户端的输出流,相当于给流中加入一个结束标记。
// out.println("over");
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader bufIn=null;
String str=null;
try {
bufIn = new BufferedReader(new InputStreamReader(
s.getInputStream()));
str = bufIn.readLine();
System.out.println(str);
bufr.close();
s.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
作者:
杜鹏云
时间:
2012-8-23 17:35
out.close(); 这个地方为什么不能通过关闭这个socket的,输出流来结束文件的复制呢,s.shutdownOutput()不也是关闭操作码?
其实这个说法不是很正确,soket只是用来建立发送数据的方式,而
流是真正用来运输数据的途径。当你 执行out.close()时,就相当于释放掉这个流所占用的所有资源,以后通过这个任何操作这个流的方法是不可能的。比如你后面的 out.println("over");这个肯定是执行不了的,会抛出IOException的。soket占用的资源其实就是IP和端口资源,利用这些资源我们可以进行TCP和UDP等网络传输。
你关闭了sokect,但是IO流不会受到影响。IO要是被关闭了,与之相关联的sokect服务也被中断了,但是这个关闭是不正常的关闭。显然你的程序的灵活性很低。。。这个和你关电脑,是直接拔掉电源还是通过软关机是一个道理。。。。
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2