import java.io.*;
import java.net.*;
/*
TCP端复制文件:
标记的问题:
可以自定义一个结束标记也可以使用socket自带的方法
socket的shutdownInput,shutdownOutput
自定义结束标记只是会麻烦一些
*/
class TcpCclient
{
public static void main(String[] args) throws Exception{
Socket s=new Socket("172.11.0.34",10009);
//读取本地的文件
BufferedReader birf=new BufferedReader(new FileReader(new File("c:\\hwsig.log")));
String line=null;
//把数据保持原样性输出去,自动刷新
//构造方法接收一个输出流
PrintWriter pow=new PrintWriter(s.getOutputStream(),true);
while((line=birf.readLine())!=null){
//把数据写出去
pow.println(line);
}
// pow.println("over");
s.shutdownOutput(); //关闭客户端的流对象,添加结束标记-1
System.out.println("开始接收服务器回复信息");
//获取服务器返回的信息
BufferedReader bir=new BufferedReader(new InputStreamReader(s.getInputStream()));
String vl=bir.readLine();
System.out.println("服务器返回的信息:"+vl);
System.out.println("服务器回复信息接收完毕");
pow.close();
// s.close();
}
}
class CFfileServer
{
public static void main(String[] args) throws Exception
{
ServerSocket ss=new ServerSocket(10009);
Socket s=ss.accept();
String ip=s.getInetAddress().getHostAddress();
System.out.println(ip+"....connected");
BufferedReader birf=new BufferedReader(new InputStreamReader(s.getInputStream()));
//将数据写出去,保持数据的原样性输出
PrintWriter pow=new PrintWriter(new FileWriter("e:\\copy2.txt"),true);
String line=null;
while((line=birf.readLine())!=null){
// if("over".equals(line))
// break;
pow.println(line);
}
//返回数据给用户
PrintWriter psw=new PrintWriter(s.getOutputStream(),true);
//为什么数据没有发出去
psw.println("兄弟,信息已经收到");
pow.close();
psw.close();
}
}
《黑马程序员》 TCP端复制文件
最新推荐文章于 2025-01-13 20:45:01 发布