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(); } } }
相关推荐
5. **输入/输出流**:网络编程涉及数据的发送和接收,因此理解和掌握I/O流是必需的。例如,InputStream和OutputStream用于处理字节流,而Reader和Writer则用于处理字符流。 6. **URL和URLConnection**:Java的URL类...
1. Java编程基础知识:变量、数据类型、控制流语句、函数、数组、链表、栈、队列、树等。 2. Java常用算法和数据结构:冒泡排序、选择排序、插入排序、链表、树等。 3. Java网络编程基础知识:TCP/IP协议、Socket...
Java_network_programming是Java编程语言中一个基础组件,用于实现网络通信。以下是Java网络编程案例教程习题参考答案中涉及到的知识点: 1. Socket编程:Socket是Java网络编程中最基本的组件,用于实现网络通信。...
Java网络编程是构建分布式应用程序的关键技术之一,TCP(Transmission Control Protocol)协议作为互联网上最基础的传输协议,为两台计算机之间提供可靠的数据传输服务。在这个聊天室项目中,我们将探讨如何利用Java...
在JAVA网络编程基础案例中,我们探讨的是如何利用Java语言进行网络通信,这涉及到一系列的概念和技术。Java网络编程是开发分布式应用的关键部分,它允许程序通过Internet或局域网进行数据传输。 首先,理解网络编程...
总结来说,这个"java网络编程基础"示例涵盖了如何创建基本的服务器和客户端应用程序,以及如何通过TCP连接进行数据交换。通过分析和学习这两个文件,初学者可以了解Java网络编程的基本概念,为进一步的网络应用开发...
1. **Socket编程**:Java的`java.net.Socket`类和`ServerSocket`类是进行TCP/IP通信的基础。Socket用于建立客户端与服务器之间的连接,ServerSocket则监听特定端口等待客户端的连接请求。通过这两个类,开发者可以...
9. **异常处理**:网络编程中常见的异常有IOException、SocketException等,良好的异常处理机制可以确保程序的健壮性。 10. **网络调试工具**:如telnet、curl和Wireshark等,可以帮助开发者测试和调试网络应用。 ...
Java网络编程中的TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在Java中,我们通常使用Socket类来实现TCP网络编程。Socket是Java.IO包的一部分,提供了网络通信的...
Java网络编程是Java开发中的一个重要领域,它涉及到Socket编程、TCP/UDP通信协议等多个方面。通过掌握Java网络编程的基础知识和技能,开发者可以构建出功能强大、性能优异的网络应用程序。随着技术的不断发展,Java...
- Java Socket类和ServerSocket类是进行TCP网络编程的核心API。 - ServerSocket用于创建服务器端的套接字,监听特定端口的连接请求。 - Socket用于创建客户端的套接字,与服务器建立连接。 3. **服务端编程**: ...
7. **异常处理**:网络编程中,必须妥善处理IOException,确保程序的健壮性。 8. **网络安全**: - **加密与解密**:了解基本的加密算法,如AES和RSA,以及如何在Java中实现。 - **认证与授权**:理解身份验证和...
1. **Java I/O**: Java I/O系统是Java网络编程的基础,包括InputStream、OutputStream、Reader、Writer等基本流,以及FileInputStream、FileOutputStream等文件流。此外,还有BufferedInputStream、BufferedReader等...
此书全面覆盖了Java网络编程的基础和高级概念,帮助开发者理解如何利用Java语言构建高效、可靠的网络应用程序。 在Java网络编程中,首要涉及的是I/O模型。书中会介绍基础的套接字(Socket)编程,包括TCP和UDP协议...
1. **Java网络编程基础**:首先,书中会介绍Java中的Socket编程,包括TCP和UDP协议的基础知识,以及如何使用Java的Socket和ServerSocket类创建客户端和服务器端的连接。 2. **I/O与NIO**:Java的I/O流系统是网络...
TCP/IP协议是互联网通信的基础,它定义了数据在网络中传输的方式。在这个模型中,每个连接都由一个特定的源IP地址、源端口号和目标IP地址、目标端口号来唯一标识。端口号是一个16位的整数,范围从0到65535,其中0-...
TCP-JAVA网络编程是Java开发中的重要组成...以上内容只是TCP-JAVA网络编程的基础,实际开发中还需要结合具体业务需求,进行更复杂的设计和优化。学习并熟练掌握这些知识,对于成为一名优秀的Java网络程序员至关重要。
2. Socket编程基础:介绍Socket类的基本概念,如Socket的创建、连接、关闭等。 Socket类是Java网络编程的核心,用于实现客户端和服务器端之间的网络通信。Socket类提供了多种方法,如connect、accept、send、...
- **Java I/O**:网络通信中数据的传输离不开I/O操作。Java提供了InputStream和OutputStream接口,以及它们的子类,用于读写数据。 2. **TCP/IP协议** - **TCP协议**:传输控制协议,提供面向连接的、可靠的、...