用java网络编程中的TCP方式上传文本文件及出现的小问题
2017-11-13 12:54
447 查看
自己今天刚学java网络编程中的TCP传输,要用TCP传输文件时,自己也是遇到了一些问题,抽空把它整理了一下,供自己以后参考使用。
首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文件给服务端,服务端接收数据并显示“上传成功”给客户端。
客户端:
服务端:
首先在这个程序中,我用一个客户端,一个服务端,从客户端上传一个文本文件给服务端,服务端接收数据并显示“上传成功”给客户端。
客户端:
1 import java.io.BufferedReader; 2 import java.io.FileReader; 3 import java.io.IOException; 4 import java.io.InputStreamReader; 5 import java.io.PrintWriter; 6 import java.net.Socket; 7 8 public class UploadClient { 9 10 /** 11 * @param args 12 * @throws IOException 13 */ 14 public static void main(String[] args) throws IOException { 15 //1.创建客户端的Socket对象 16 Socket s=new Socket("192.168.1.127",10000); 17 18 //2.将文件放入缓冲区,并上传 19 BufferedReader bufr= 20 new BufferedReader(new FileReader("client.txt")); 21 22 //通过使用PrintWriter对字节流和字符流进行处理,接管流 23 PrintWriter out =new PrintWriter(s.getOutputStream(),true); 24 25 //开始读取,上传给服务端 26 String line=null; 27 while((line=bufr.readLine())!=null){ 28 out.println(line); 29 } 30 31 //在这里必须给一个用于结束的标志,要不然服务端会一直等待····· 32 out.println("over"); 33 34 //3.读取服务端返回的对象 35 BufferedReader bufrIn =new BufferedReader(new InputStreamReader(s.getInputStream())); 36 String str=bufrIn.readLine(); 37 System.out.println(str); 38 39 //4.关流 40 bufr.close(); 41 s.close(); 42 } 43 44 }
服务端:
import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.FileWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; public class UploadServer { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { //1.建立服务端的socket对象 ServerSocket ss=new ServerSocket(10000); //2.接收服务端的数据 Socket s=ss.accept(); //将接受的数据放入流中 BufferedReader bufIn= new BufferedReader(new InputStreamReader(s.getInputStream())); //指定要写入得文件 BufferedWriter bufw=new BufferedWriter(new FileWriter("server.txt")); //开始读取 //缓冲区的默认大小为8k,一到8k则会自动刷新,若没有结束标志,则得到的文件大小一定是8的倍数 String line=null; while((line=bufIn.readLine())!=null){ if("over".equals(line)) break; bufw.write(line); bufw.newLine(); //自己写刷新 bufw.flush(); } //向客户端返回数据,用PrintWriter PrintWriter out =new PrintWriter(s.getOutputStream(),true); out.println("上传成功"); //关流 bufw.close(); //与客户端断开连接关服务端 s.close(); ss.close(); } }
相关文章推荐
- Java基础知识强化之网络编程笔记11:TCP之TCP协议上传文本文件
- Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
- Java基础知识强化之网络编程笔记13:TCP之TCP协议上传图片并给出反馈
- Java基础知识强化之网络编程笔记14:TCP之多个客户端上传到一个服务器的思考(多线程改进)
- Java网络编程中的TCP,UDP通信方式详解
- Java基础-网络编程(TCP-上传图片)
- java 网络编程之TCP通信和简单的文件上传功能
- Java基础24天--02--网络编程(TCP--客户端并发上传图片)
- Java网络编程之TCP协议下—上传文件到服务器程序
- 【java面试系列之网络编程】TCP和UDP的区别、TCP协议的三次握手和四次挥手、TCP协议的通信状态、网络编程时的同步、异步、阻塞、非阻塞、进程间的通信方式、TCP的流量控制和拥塞控制
- Java基础---Java---网络编程---TCP、UDP、UDP-键盘录入方式数据、Socket、TCP复制文件、UDP-聊天
- java 网络编程之TCP通信和简单的文件上传功能实例
- Java网络编程实践和总结 --- 基于TCP的Socket编程之实现文件上传和下载服务
- Java基础知识强化之网络编程笔记10:TCP之客户端读取文本文件服务器控制台输出
- Java网络编程Demo(二)TCP文件上传
- Java网络编程(TCP协议-练习-上传文本文件)
- Java基础知识强化之网络编程笔记12:TCP之TCP协议上传文本文件并给出反馈
- 第六篇:JAVA网络编程之TCP Socket通信中由read返回值造成的的死锁问题(含代码)
- Java网络编程--TCP文件上传、图片上传示例
- Java基础知识强化之网络编程笔记09:TCP之客户端键盘录入服务器写到文本文件中