<强> Java使用TCP实现数据传输实例详解强>
<强> TCP所提供服务的主要特点:强>
1。面向连接的传输;
2.端到端的通信;
3.高可靠性,确保传输数据的正确性,不出现丢失或乱序;
4.全双工方式传输;
5.采用字节流方式,即以字节为单位传输字节序列。
6 .紧急数据传送功能。
TCP传输需要建立客户端和服务器端,即套接字和服务器套接字,建立连接后,通过插座中的IO流进行数据的传输。传输结束后关闭插座。
客户端和服务器端是两个独立的应用程序。
以下是实现基本的TCP数据传输的演示代码:
包javase.day18; 进口java.io.BufferedReader; 进口java.io.BufferedWriter; 进口java.io.InputStreamReader; 进口java.io.OutputStreamWriter; 进口java.net.ServerSocket; 进口java.net.Socket; 公开课TransTextDemo { 公共静态void main (String [] args) { } } 类TcpClient2 { 公共静态void main (String [] args){抛出异常 system . out。println(“客户开始…”); 套接字s=新的套接字(“192.168.1.2 ",10005); BufferedReader br=new BufferedReader(新InputStreamReader(系统)); BufferedWriter bw=new BufferedWriter(新OutputStreamWriter (s.getOutputStream ())); 字符串sendDataStr=零; 在((sendDataStr=br.readLine ()) !=null) { 如果(sendDataStr.equals(“再见”)){ 打破; } bw.write (sendDataStr); bw.newLine (); bw.flush (); } bw.close (); } } 类TcpServer2 { 公共静态void main (String [] args){抛出异常 system . out。println(“服务器启动…”); 考察ss=考察(10005); 套接字s=ss.accept (); BufferedReader br=new BufferedReader(新InputStreamReader (s.getInputStream ())); BufferedWriter bw=new BufferedWriter(新OutputStreamWriter (s.getOutputStream ())); 字符串receiveDataStr=零; 在((receiveDataStr=br.readLine ()) !=null) { 如果(receiveDataStr.equals(“再见”)){ 打破; } system . out。println(“接收数据:“+ receiveDataStr); } } } >之前使用TCP实现文本文件上传的演示代码:
包javase.day18; 进口java.io.BufferedReader; 进口java.io.FileReader; 进口java.io.FileWriter; 进口java.io.InputStreamReader; 进口java.io.OutputStreamWriter; 进口java.io.PrintWriter; 进口java.net.ServerSocket; 进口java.net.Socket; 公开课UploadText { 公共静态void main (String [] args) {//TODO自动生成方法存根 } } 类TextServer { 公共静态void main (String [] args){抛出异常 system . out。println(“服务器启动…”); 考察ss=考察(10008); 套接字s=ss.accept (); BufferedReader br=new BufferedReader(新InputStreamReader (s.getInputStream ())); PrintWriter=new PrintWriter(新FileWriter (“C: \ \ java_test \ \ server.txt”),真的); 字符串行=零; 在((=br.readLine行())!=null) { System.out.println(线); out.println(线); } PrintWriter pw=new PrintWriter(新OutputStreamWriter (s.getOutputStream()),真的); pw。println(“上传成功”); pw.close (); s.close (); ss.close (); } } 类TextClient { 公共静态void main (String [] args){抛出异常 system . out。println(“客户开始…”); 套接字clientSocket=新的套接字(“192.168.1.2 ",10008); BufferedReader br=new BufferedReader(新FileReader (“C: \ \ java_test \ \ SystemDemo.java ")); PrintWriter=new PrintWriter (clientSocket.getOutputStream(),真的); 字符串行=零; 在((=br.readLine行())!=null) { System.out.println(线); out.println(线); } clientSocket.shutdownOutput (); BufferedReader br2=new BufferedReader(新InputStreamReader (clientSocket.getInputStream ())); 字符串confirmMsgStr=br2.readLine (); System.out.println (confirmMsgStr); br2.close (); clientSocket.close (); } } >之前实现图片上传的演示代码:
包javase.day18; 进口java.io.BufferedInputStream; 进口java.io.BufferedOutputStream; 进口java.io.FileInputStream; 进口java.io.FileOutputStream; 进口java.net.ServerSocket; 进口java.net.Socket; 公开课UploadImage { 公共静态void main (String [] args) { } } 类ImageClient { 公共静态void main (String [] args){抛出异常 套接字imageClientSocket=新的套接字(“192.168.1.2 ",10010); BufferedInputStream bis=new BufferedInputStream(新FileInputStream (“C: \ \ java_test \ \客户\ \生活用品01. jpg”)); BufferedOutputStream bos=new BufferedOutputStream (imageClientSocket.getOutputStream ()); byte [] buf=新字节(1024 * 100); int len=0; 在((len=bis.read (buf) !=1) { bos.write (buf 0 len); } imageClientSocket.shutdownOutput (); BufferedInputStream bis2=new BufferedInputStream (imageClientSocket.getInputStream ()); byte [] buf2=新字节[1024]; int len2=0; 在((len2=bis2.read (buf2) !=1) { system . out。println(新字符串(buf2 0 len2)); } bis.close (); imageClientSocket.close (); } } 类ImageServer { 公共静态void main (String [] args){抛出异常 考察ss=考察(10010); 套接字s=ss.accept (); BufferedInputStream bis=new BufferedInputStream (s.getInputStream ()); BufferedOutputStream bos=new BufferedOutputStream(新FileOutputStream (“C: \ \ java_test \ \ server \ \生活用品01. jpg”)); byte [] buf=新字节(1024 * 100); int len=0; 在((len=bis.read (buf) !=1) { bos。写(buf 0 len); } BufferedOutputStream bos2=new BufferedOutputStream (s.getOutputStream ()); bos2。写(“上传成功”.getBytes ()); bos2.close (); s.close (); ss.close (); } }Java使用TCP实现数据传输实例详解