`
xiao1zhao2
  • 浏览: 40248 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java网络编程基础:TCP

阅读更多
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();
						}
					}
				}

 

 

0
2
分享到:
评论
1 楼 cywhoyi 2015-08-02  
加点难度,如何解决拆包、粘包

相关推荐

    《Java网络编程实例:Java网络编程实例》

    5. **输入/输出流**:网络编程涉及数据的发送和接收,因此理解和掌握I/O流是必需的。例如,InputStream和OutputStream用于处理字节流,而Reader和Writer则用于处理字符流。 6. **URL和URLConnection**:Java的URL类...

    Java图解创意编程:从菜鸟到互联网大厂之路.pptx

    1. Java编程基础知识:变量、数据类型、控制流语句、函数、数组、链表、栈、队列、树等。 2. Java常用算法和数据结构:冒泡排序、选择排序、插入排序、链表、树等。 3. Java网络编程基础知识:TCP/IP协议、Socket...

    Java网络编程案例教程习题参考答案 .pdf

    Java_network_programming是Java编程语言中一个基础组件,用于实现网络通信。以下是Java网络编程案例教程习题参考答案中涉及到的知识点: 1. Socket编程:Socket是Java网络编程中最基本的组件,用于实现网络通信。...

    Java网络编程 TCP协议 聊天室

    Java网络编程是构建分布式应用程序的关键技术之一,TCP(Transmission Control Protocol)协议作为互联网上最基础的传输协议,为两台计算机之间提供可靠的数据传输服务。在这个聊天室项目中,我们将探讨如何利用Java...

    JAVA网络编程基础案例

    在JAVA网络编程基础案例中,我们探讨的是如何利用Java语言进行网络通信,这涉及到一系列的概念和技术。Java网络编程是开发分布式应用的关键部分,它允许程序通过Internet或局域网进行数据传输。 首先,理解网络编程...

    java网络编程基础

    总结来说,这个"java网络编程基础"示例涵盖了如何创建基本的服务器和客户端应用程序,以及如何通过TCP连接进行数据交换。通过分析和学习这两个文件,初学者可以了解Java网络编程的基本概念,为进一步的网络应用开发...

    Java网络编程实例:TP312JA S973.rar

    1. **Socket编程**:Java的`java.net.Socket`类和`ServerSocket`类是进行TCP/IP通信的基础。Socket用于建立客户端与服务器之间的连接,ServerSocket则监听特定端口等待客户端的连接请求。通过这两个类,开发者可以...

    Java网络编程/Java网络编程实例

    9. **异常处理**:网络编程中常见的异常有IOException、SocketException等,良好的异常处理机制可以确保程序的健壮性。 10. **网络调试工具**:如telnet、curl和Wireshark等,可以帮助开发者测试和调试网络应用。 ...

    Java网络编程--TCP网络编程(tcp缩略语)

    Java网络编程中的TCP(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。在Java中,我们通常使用Socket类来实现TCP网络编程。Socket是Java.IO包的一部分,提供了网络通信的...

    Java网络编程:深入理解TCP,UDP通信机

    Java网络编程是Java开发中的一个重要领域,它涉及到Socket编程、TCP/UDP通信协议等多个方面。通过掌握Java网络编程的基础知识和技能,开发者可以构建出功能强大、性能优异的网络应用程序。随着技术的不断发展,Java...

    java网络编程 socket的TCP应用编程

    - Java Socket类和ServerSocket类是进行TCP网络编程的核心API。 - ServerSocket用于创建服务器端的套接字,监听特定端口的连接请求。 - Socket用于创建客户端的套接字,与服务器建立连接。 3. **服务端编程**: ...

    java网络编程

    7. **异常处理**:网络编程中,必须妥善处理IOException,确保程序的健壮性。 8. **网络安全**: - **加密与解密**:了解基本的加密算法,如AES和RSA,以及如何在Java中实现。 - **认证与授权**:理解身份验证和...

    Java网络编程期末考试复习题库+答案

    1. **Java I/O**: Java I/O系统是Java网络编程的基础,包括InputStream、OutputStream、Reader、Writer等基本流,以及FileInputStream、FileOutputStream等文件流。此外,还有BufferedInputStream、BufferedReader等...

    Java网络编程(第4版)PDF

    此书全面覆盖了Java网络编程的基础和高级概念,帮助开发者理解如何利用Java语言构建高效、可靠的网络应用程序。 在Java网络编程中,首要涉及的是I/O模型。书中会介绍基础的套接字(Socket)编程,包括TCP和UDP协议...

    Java网络编程第三版.pdf

    1. **Java网络编程基础**:首先,书中会介绍Java中的Socket编程,包括TCP和UDP协议的基础知识,以及如何使用Java的Socket和ServerSocket类创建客户端和服务器端的连接。 2. **I/O与NIO**:Java的I/O流系统是网络...

    JAVA网络编程:端口扫描器

    TCP/IP协议是互联网通信的基础,它定义了数据在网络中传输的方式。在这个模型中,每个连接都由一个特定的源IP地址、源端口号和目标IP地址、目标端口号来唯一标识。端口号是一个16位的整数,范围从0到65535,其中0-...

    TCP-JAVA网络编程(PPT)

    TCP-JAVA网络编程是Java开发中的重要组成...以上内容只是TCP-JAVA网络编程的基础,实际开发中还需要结合具体业务需求,进行更复杂的设计和优化。学习并熟练掌握这些知识,对于成为一名优秀的Java网络程序员至关重要。

    Java网络编程的研究.pdf

    2. Socket编程基础:介绍Socket类的基本概念,如Socket的创建、连接、关闭等。 Socket类是Java网络编程的核心,用于实现客户端和服务器端之间的网络通信。Socket类提供了多种方法,如connect、accept、send、...

    Java网络编程精解(孙卫琴)电子教案

    - **Java I/O**:网络通信中数据的传输离不开I/O操作。Java提供了InputStream和OutputStream接口,以及它们的子类,用于读写数据。 2. **TCP/IP协议** - **TCP协议**:传输控制协议,提供面向连接的、可靠的、...

Global site tag (gtag.js) - Google Analytics