首页 > 代码库 > TCP上传文本
TCP上传文本
TCP上传文本其实就是文件的复制,只不过文件复制大多是发生在本地,而上传下载是发生在网络上。
注:TCP上传文本最要命的一个问题就是:客户端数据发送完毕,而服务端仍然在等待读取。这时,就需要客户端发送结束标记s.shutdownOutput(),该方法其实就是发送给服务端一个结束标记,这个标记也可以自己定义,但是自己定义有可能与发送的内容重复,所以建议使用shutdownxxxput()方法。
TCP上传文本的客户端:
import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.Socket;public class UpLoadClient { public static void main(String[] args) throws Exception, IOException { /* * 上传文本的客户端,读取本地文本数据,发送给服务器端,服务器端接收完毕后回馈“上传成功”字样 */ System.out.println("上传文本客户端启动....."); //客户端socket Socket s = new Socket("192.168.17.1",10001);//绑定要发送的ip地址以及端口号 //1.确定数据源。本地文本文件 BufferedReader bufr = new BufferedReader(new FileReader("NetSpider.txt")); //2.确定目的。socket输出流// BufferedWriter bufw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream())); PrintWriter out = new PrintWriter(s.getOutputStream(),true);//自动刷新 String line = null; while((line = bufr.readLine())!=null){ out.println(line); } //给服务端发送标记// out.println("over");//容易重复 //使用socket的禁用输出流方法。 s.shutdownOutput(); //3.通过socket读取流获取服务器端返回的数据 BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream())); String lineIn = bufIn.readLine();//阻塞式 System.out.println(lineIn); //4.关闭 bufr.close(); s.close(); }}
TCP上传文本的服务端:
import java.io.BufferedReader;import java.io.FileWriter;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class UpLoadServer { public static void main(String[] args) throws Exception { /* * 上传文本的服务端,接收文本数据,并存储到文件中,服务器端接收完毕后,回馈“上传成功”字样 */ System.out.println("上传服务端启动...."); //1.服务端对象 ServerSocket ss = new ServerSocket(10001); //2.获取客户端 Socket s = ss.accept(); String ip = s.getInetAddress().getHostAddress(); System.out.println(ip+"...connected"); //3.获取读取流,确定源,网络socket BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream())); //4.确定目的 PrintWriter pw = new PrintWriter(new FileWriter("server.txt"),true); //5.频繁读写 String line = null; while((line = bufIn.readLine())!=null){// if("over".equals(line)){// break;// } pw.println(line); } //6.改客户端反馈信息 PrintWriter out = new PrintWriter(s.getOutputStream(),true); out.println("上传成功"); pw.close(); s.close(); ss.close(); }}
TCP上传文本
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。