这里有新鲜出炉的 Java 并发编程示例,程序狗速度看过来!
java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 Sun Microsystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台(即 JavaEE(j2ee), JavaME(j2me), JavaSE(j2se))的总称。
这篇文章主要介绍了 Java 使用 TCP 实现数据传输实例详解的相关资料, 需要的朋友可以参考下
Java 使用 TCP 实现数据传输实例详解
TCP 所提供服务的主要特点:
1.面向连接的传输;
2.端到端的通信;
3.高可靠性,确保传输数据的正确性,不出现丢失或乱序;
4.全双工方式传输;
5.采用字节流方式,即以字节为单位传输字节序列;
6.紧急数据传送功能。
TCP 传输需要建立客户端和服务器端,即 Socket 和 Server Socket , 建立连接后,通过 Socket 中的 IO 流进行数据的传输 。传输结束后关闭 Socket。
客户端和服务器端是两个独立的应用程序。
以下是实现基本的 TCP 数据传输的 Demo code:
- package javase.day18;
- import java.io.BufferedReader;
- import java.io.BufferedWriter;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class TransTextDemo {
- public static void main(String[] args) {}
- }
- class TcpClient2 {
- public static void main(String[] args) throws Exception {
- System.out.println("client start...");
- Socket s = new Socket("192.168.1.2", 10005);
- BufferedReader br = new BufferedReader(new InputStreamReader(System. in ));
- BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
- String sendDataStr = null;
- while ((sendDataStr = br.readLine()) != null) {
- if (sendDataStr.equals("bye")) {
- break;
- }
- bw.write(sendDataStr);
- bw.newLine();
- bw.flush();
- }
- bw.close();
- }
- }
- class TcpServer2 {
- public static void main(String[] args) throws Exception {
- System.out.println("server start...");
- ServerSocket ss = new ServerSocket(10005);
- Socket s = ss.accept();
- BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
- BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
- String receiveDataStr = null;
- while ((receiveDataStr = br.readLine()) != null) {
- if (receiveDataStr.equals("bye")) {
- break;
- }
- System.out.println("receive data:" + receiveDataStr);
- }
- }
- }
使用 TCP 实现文本文件上传的 Demo code:
- package javase.day18;
- import java.io.BufferedReader;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.InputStreamReader;
- import java.io.OutputStreamWriter;
- import java.io.PrintWriter;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class UploadText {
- public static void main(String[] args) {
- // TODO Auto-generated method stub
- }
- }
- class TextServer {
- public static void main(String[] args) throws Exception {
- System.out.println("Server start...");
- ServerSocket ss = new ServerSocket(10008);
- Socket s = ss.accept();
- BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
- PrintWriter out = new PrintWriter(new FileWriter("C:\\java_test\\server.txt"), true);
- String line = null;
- while ((line = br.readLine()) != null) {
- System.out.println(line);
- out.println(line);
- }
- PrintWriter pw = new PrintWriter(new OutputStreamWriter(s.getOutputStream()), true);
- pw.println("upload successful");
- pw.close();
- s.close();
- ss.close();
- }
- }
- class TextClient {
- public static void main(String[] args) throws Exception {
- System.out.println("Client start...");
- Socket clientSocket = new Socket("192.168.1.2", 10008);
- BufferedReader br = new BufferedReader(new FileReader("C:\\java_test\\SystemDemo.java"));
- PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
- String line = null;
- while ((line = br.readLine()) != null) {
- System.out.println(line);
- out.println(line);
- }
- clientSocket.shutdownOutput();
- BufferedReader br2 = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
- String confirmMsgStr = br2.readLine();
- System.out.println(confirmMsgStr);
- br2.close();
- clientSocket.close();
- }
- }
实现图片上传的 Demo code:
- package javase.day18;
- import java.io.BufferedInputStream;
- import java.io.BufferedOutputStream;
- import java.io.FileInputStream;
- import java.io.FileOutputStream;
- import java.net.ServerSocket;
- import java.net.Socket;
- public class UploadImage {
- public static void main(String[] args) {
- }
- }
- class ImageClient {
- public static void main(String[] args) throws Exception {
- Socket imageClientSocket = new Socket("192.168.1.2", 10010);
- BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:\\java_test\\client\\生活用品01.jpg"));
- BufferedOutputStream bos = new BufferedOutputStream(imageClientSocket.getOutputStream());
- byte[] buf = new byte[1024 * 100];
- int len = 0;
- while ((len = bis.read(buf)) != -1) {
- bos.write(buf, 0, len);
- }
- imageClientSocket.shutdownOutput();
- BufferedInputStream bis2 = new BufferedInputStream(imageClientSocket.getInputStream());
- byte[] buf2 = new byte[1024];
- int len2 = 0;
- while ((len2 = bis2.read(buf2)) != -1) {
- System.out.println(new String(buf2, 0, len2));
- }
- bis.close();
- imageClientSocket.close();
- }
- }
- class ImageServer {
- public static void main(String[] args) throws Exception {
- ServerSocket ss = new ServerSocket(10010);
- Socket s = ss.accept();
- BufferedInputStream bis = new BufferedInputStream(s.getInputStream());
- BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:\\java_test\\server\\生活用品01.jpg"));
- byte[] buf = new byte[1024 * 100];
- int len = 0;
- while ((len = bis.read(buf)) != -1) {
- bos.write(buf, 0, len);
- }
- BufferedOutputStream bos2 = new BufferedOutputStream(s.getOutputStream());
- bos2.write("upload successful".getBytes());
- bos2.close();
- s.close();
- ss.close();
- }
- }
来源: http://www.phperz.com/article/17/0820/338361.html