1、TCP特点
Transmission Control Protocol 传输控制协议
面向连接,通过三次握手建立连接,可靠的协议
有明确的客户端和服务器端
一旦连接可以将数据当做一个双向字节流进行交换,开销大
2、相关类
Socket | 客户端Socket服务类 |
ServerSocket | 服务器端Socket服务类 |
3、TCP传输示例代码
// 客户端 public class Client { public static void main(String[] args) throws IOException { // 1:使用Socket对象,创建客户端Socket服务 Socket socket = new Socket("127.0.0.1", 20000); // 2:通过连接建立数据传输通道,通过Socket对象可以获得通道中的输入输出流对象 OutputStream out = socket.getOutputStream(); InputStream in = socket.getInputStream(); // 3:使用输入输出流,读写数据 out.write("Hello World".getBytes()); byte[] b = new byte[1024]; int length = in.read(b); String message = new String(b, 0, length); System.out.println(message); // 4:关闭Socket服务 socket.close(); } } // 服务器端 public class Server { public static void main(String[] args) throws IOException { // 1:通过ServerSocket对象,创建服务器端Socket服务,必须设置端口号 ServerSocket server = new ServerSocket(20000); // 2:获取连接的客户端的Socket对象,accept是阻塞方法 Socket socket = server.accept(); // 3:通过Socket对象获得输入输出流进行读写数据 InputStream in = socket.getInputStream(); OutputStream out = socket.getOutputStream(); byte[] b = new byte[1024]; int length = in.read(b); String message = new String(b, 0, length); System.out.println(message); out.write("收到".getBytes()); // 4:关闭客户端、服务器端的服务 socket.close(); server.close(); } }
注意,阻塞式方法需要结束标记,否则容易造成双方同时等待可以通过Socket.shutdownInput(),Socket.shutdownOutput()通知对方.
4、实现文件上传
// 客户端 public class UploadClient { public static void main(String[] args) throws Exception { // 建立Socket服务 Socket socket = new Socket("192.168.1.100", 20000); // 建立文件及流对象 File file = new File("src/com/net/upload/a.jpg"); FileInputStream fis = new FileInputStream(file); OutputStream out = socket.getOutputStream(); // 通过流上传文件 byte[] bur = new byte[1024]; int length = 0; while ((length = fis.read(bur)) != -1) { out.write(bur, 0, length); } fis.close(); // 发送完毕,关闭Socket的输出流 socket.shutdownOutput(); // 接收结束信息 InputStream in = socket.getInputStream(); byte[] message = new byte[1024]; length = in.read(message); System.out.println(new String(message, 0, length)); // 关闭Socket服务 socket.close(); } } // 服务器端 public class UploadServer { public static void main(String[] args) throws IOException { ServerSocket server = new ServerSocket(20000); while (true) { Socket socket = server.accept(); new Thread(new Upload(socket)).start(); } } } // 上传任务类 class Upload implements Runnable { private Socket socket; public Upload(Socket socket) { this.socket = socket; } @Override public void run() { try { String ip = socket.getInetAddress().getHostAddress(); // 建立文件及流对象 InputStream in = socket.getInputStream(); File file = new File("src/com/net/upload/" + ip + "a.jpg"); FileOutputStream fos = new FileOutputStream(file); // 接收文件 byte[] bur = new byte[1024]; int length = 0; while ((length = in.read(bur)) != -1) { fos.write(bur, 0, length); } fos.close(); // 向客户端返回上传完毕消息 OutputStream out = socket.getOutputStream(); out.write("上传完毕".getBytes()); // 关闭Socket服务 socket.close(); } catch (IOException e) { e.printStackTrace(); } } }
相关推荐
先运行服务器 再运行客户端 希望对你们有帮助 希望在此基础上加以改进后 您再传上来 供大家分享
《Java高手真经(编程基础卷):Java核心编程技术》详细讲解了Java语言基础开发中的各种技术,主要内容包括如下。Java开发入门:JDK、JVM、Eclipse、Linux。Java语法基础:类、抽象类、接口、内部类、匿名类、异常、...
《Java高手真经(编程基础卷):Java核心编程技术》详细讲解了Java语言基础开发中的各种技术,主要内容包括如下。Java开发入门:JDK、JVM、Eclipse、Linux。Java语法基础:类、抽象类、接口、内部类、匿名类、异常、...
《Java高手真经(编程基础卷):Java核心编程技术》详细讲解了Java语言基础开发中的各种技术,主要内容包括如下。Java开发入门:JDK、JVM、Eclipse、Linux。Java语法基础:类、抽象类、接口、内部类、匿名类、异常、...
《Java高手真经(编程基础卷):Java核心编程技术》详细讲解了Java语言基础开发中的各种技术,主要内容包括如下。Java开发入门:JDK、JVM、Eclipse、Linux。Java语法基础:类、抽象类、接口、内部类、匿名类、异常、...
《Java高手真经(编程基础卷):Java核心编程技术》详细讲解了Java语言基础开发中的各种技术,主要内容包括如下。Java开发入门:JDK、JVM、Eclipse、Linux。Java语法基础:类、抽象类、接口、内部类、匿名类、异常、...
java网络编程基础知识,TCP/IP协议,Socket编程
该文档主要整理了Java网络编程相关的内容,主要包括通信要素、TCP网络编程、UDP网络编程以及URL编程的相关内容及示例代码
635.633.JAVA基础教程_反射-复习:TCP、UDP、URL网络编程(635).rar
无论你是经验丰富的网络开发人员、Java程序员新手,还是只希望对Java网络编程稍有些了解的人,都会发现《Java编程(第三版)》将成为你的书库中一个重要的部分。一旦开始使用Java网络API,只要你能想到它就能够做...
java 网络编程tcp/ip,chm格式,很基础很重要的东西
掌握Java网络编程:掌握Java网络编程的相关技术,如Socket、UDP、TCP、IP等,能够进行网络通信和网络编程。 掌握Java安全性编程:掌握Java安全性编程的相关技术,如加密解密、数字签名、权限管理等,能够保障应用...
附件包含Java网络编程基础详解,如UDP发送端接收端聊天、TCP客户端服务端上传下载等。关于Tomcat7绿色版下载安装,MyEclipse10安装及部署Tomcat,见我的博文:...
本书内容全面,涵盖了从网络基础知识到远程方法调用(RMI)等各方面的内容,书中章节涉及到TCP和UDPsocket、服务器socket、URL和URI、组播以及特殊用途的API(如JavaMail)等等。本书展示了如何使用JSSE编写安全的...
比如166.111.136.3 , 166.111.52.80 主机名(hostname):网络地址的助记名,按照域名进行分级管理。 端口号(port number):网络通信时同一机器上的不同进程的标识。 服务类型(service):网络的各种服务。 在Internet...
本书是目前电子资源中比较基础的一本,适合具备初步计算机网络知识(例如TCP/IP网路五层模型)的读者快速理解网络编程原理和JSP的核心技术,进而快速上手开发。 本书的作者撰写是相当用心和仔细的,各知识点都有比较...
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。 java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用...
讲述了网络的一些基础知识,和java的网络编程的相关知识!
Java基础知识:语法、面向对象编程、集合、多线程、异常处理等。 Java高级特性:反射、泛型、枚举、注解、 Lambda表达式等。 Java虚拟机:Java内存模型、垃圾回收、类加载机制等。 常见的Java框架:Spring、...
TCP/IP 编程基础 URL & URLConnection