Java使用TCP实现数据传输实例详解

  

<强> 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实现数据传输实例详解