锋盈数科-知识库 Logo
首页
软件开发
计算机基础
Hello Halo
新手必读
关于本知识库
登录 →
锋盈数科-知识库 Logo
首页 软件开发 计算机基础 Hello Halo 新手必读 关于本知识库
登录
  1. 首页
  2. 网络运维
  3. 网络编程(通信)

网络编程(通信)

0
  • 网络运维
  • 发布于 2024-09-21
  • 5 次阅读
黄健
黄健

目录


一、网络编程与通信模式

二、网络通信的三要素

1. IP地址

2. 端口号

3. 通信协议

三、UDP通信

UDP通信实现

四、TCP通信

TCP通信实现

五、即时通信与线程池

线程池优化

六、HTTP协议与BS系统

总结



一、网络编程与通信模式

网络编程是指程序之间通过网络进行数据交互的技术。常见的网络通信模式包括客户端-服务器(Client-Server,CS)模式和浏览器-服务器(Browser-Server,BS)模式。

  • CS模式:客户端和服务器需要程序员开发实现,用户需要安装客户端软件。
  • BS模式:用户只需安装浏览器,无需安装专门的客户端软件(day12、网络编程(通信))。

二、网络通信的三要素

网络通信的实现依赖于三个关键要素:IP地址、端口号和通信协议。

1. IP地址

IP地址用于唯一标识网络中的设备。常见的IP协议版本包括IPv4和IPv6。

import java.net.InetAddress;

public class IPDemo {
    public static void main(String[] args) throws Exception {
        InetAddress localAddress = InetAddress.getLocalHost();
        System.out.println("本机IP地址: " + localAddress.getHostAddress());

        InetAddress baiduAddress = InetAddress.getByName("www.baidu.com");
        System.out.println("百度IP地址: " + baiduAddress.getHostAddress());
    }
}

该代码展示了如何获取本机和远程主机(如百度)的IP地址​(day12、网络编程(通信))。

2. 端口号

端口号用于标识同一设备中运行的不同应用程序。端口号范围是0到65535,其中0到1023为系统保留端口,1024到49151为注册端口,49152到65535为动态端口​(day12、网络编程(通信))。

3. 通信协议

通信协议规定了数据在网络中的传输方式。常用的协议有UDP协议和TCP协议​(day12、网络编程(通信))。

三、UDP通信

UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,适用于对速度要求较高但对数据可靠性要求较低的场景,如视频、语音通话​(day12、网络编程(通信))​(day12、网络编程(通信))。

UDP通信实现
  • 发送端:
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;

public class UDPSender {
    public static void main(String[] args) throws Exception {
        DatagramSocket socket = new DatagramSocket();
        String message = "Hello, UDP!";
        byte[] buffer = message.getBytes();
        InetAddress receiverAddress = InetAddress.getByName("localhost");
        DatagramPacket packet = new DatagramPacket(buffer, buffer.length, receiverAddress, 8888);
        socket.send(packet);
        socket.close();
    }
}


接收端:

import java.net.DatagramPacket;
import java.net.DatagramSocket;

public class UDPReceiver {
    public static void main(String[] args) throws Exception {
        DatagramSocket socket = new DatagramSocket(8888);
        byte[] buffer = new byte[1024];
        DatagramPacket packet = new DatagramPacket(buffer, buffer.length);
        socket.receive(packet);
        String received = new String(packet.getData(), 0, packet.getLength());
        System.out.println("接收到的信息: " + received);
        socket.close();
    }
}


该代码演示了如何通过UDP进行简单的消息发送和接收​(day12、网络编程(通信))​(day12、网络编程(通信))。

四、TCP通信

TCP(Transmission Control Protocol)是一种面向连接的可靠传输协议,适用于对数据传输可靠性要求较高的场景,如文件传输和金融数据通信​(day12、网络编程(通信))​(day12、网络编程(通信))。

TCP通信实现
  • 客户端:
import java.io.OutputStream;
import java.net.Socket;

public class TCPClient {
    public static void main(String[] args) throws Exception {
        Socket socket = new Socket("localhost", 9999);
        OutputStream os = socket.getOutputStream();
        os.write("Hello, TCP!".getBytes());
        os.close();
        socket.close();
    }
}

服务端:

import java.io.InputStream;
import java.net.ServerSocket;
import java.net.Socket;

public class TCPServer {
    public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(9999);
        Socket socket = serverSocket.accept();
        InputStream is = socket.getInputStream();
        byte[] buffer = new byte[1024];
        int length = is.read(buffer);
        System.out.println("接收到的信息: " + new String(buffer, 0, length));
        is.close();
        socket.close();
        serverSocket.close();
    }
}


该代码展示了如何通过TCP建立连接并传输数据​(day12、网络编程(通信))​(day12、网络编程(通信))。

五、即时通信与线程池

即时通信是一种网络通信模式,允许一个客户端发送的消息能够被其他所有客户端接收到。这通常通过服务器端的端口转发来实现,需要使用线程池来优化并发处理性能​(day12、网络编程(通信))​(day12、网络编程(通信))。

线程池优化

使用线程池可以提高服务器处理多客户端并发请求的能力,避免过多线程创建导致的性能开销。

import java.io.InputStream;
import java.io.OutputStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class TCPThreadPoolServer {
    public static void main(String[] args) throws Exception {
        ServerSocket serverSocket = new ServerSocket(9999);
        ExecutorService executorService = Executors.newFixedThreadPool(10); // 创建一个固定大小为10的线程池

        while (true) {
            Socket socket = serverSocket.accept();
            executorService.submit(() -> {
                try {
                    InputStream is = socket.getInputStream();
                    byte[] buffer = new byte[1024];
                    int length = is.read(buffer);
                    System.out.println("接收到的信息: " + new String(buffer, 0, length));

                    // 向客户端发送响应
                    OutputStream os = socket.getOutputStream();
                    os.write("消息已收到".getBytes());

                    is.close();
                    os.close();
                    socket.close();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            });
        }
    }
}

六、HTTP协议与BS系统

在BS架构中,浏览器使用HTTP协议与服务器通信。服务器需要响应符合HTTP协议格式的数据,以便浏览器能够正确解析和展示​(day12、网络编程(通信))​(day12、网络编程(通信))。

总结

网络编程涉及多种通信模式和协议的应用,理解并正确使用这些技术能够有效实现数据在网络中的传输。通过UDP和TCP的实例代码,我们可以看到不同协议的实现差异和适用场景。这为我们在实际开发中选择合适的网络通信方式提供了指导。


原文链接: https://blog.csdn.net/2302_80084329/article/details/141096896

标签: #计算机基础 19 #知识库 257
相关文章

搭建glpi(IT资产管理系统) 2025-04-19 14:59

目录 1.环境准备 2.安装环境依赖 3.安装mariadb 4.安装httpd 5.源码:glpi-project

修改注册表停用 Windows 资讯和兴趣服务教程 2025-03-14 18:02

修改注册表停用 Windows 资讯和兴趣服务教程 一、自动修改注册表(适合不想手动操作的用户)

机房建设标准化施工规范

机房建设标准化施工规范 2024-10-21 09:07

不少朋友问到这个施工规范。 主要关于机房环境、用电、安全、布置、设备安装这些等等问题,在我们弱电VIP技术群中也不断有朋友讨论到。 本期我们来通过这个来了解下。

光纤跳线fc-sc

光纤跳线fc-sc 2024-10-16 21:59

光纤跳线FC-SC是一种常见的光纤连接器跳线,它用于连接不同类型的光纤接口。这种跳线的一端装有FC连接器,另一端装有SC连接器。 FC连接器(Ferrule Connector)是一种早期的光纤连接器类型,它采用金属套管和螺纹锁紧机制,具有较好的机械性能和稳定性。FC连接器通常用于单模光纤的连接,其

Web安全与网络安全:SQL漏洞注入 2024-09-26 17:57

Web安全与网络安全:SQL漏洞注入 引言 在Web安全领域,SQL注入漏洞(SQL Injection Vulnerability)是一种极具破坏性的安全威胁。它允许攻击者通过向Web应用程序的输入字段中插入或"注入"恶意的SQL代码片段,从而操纵后台数据库系统,执行未授权的数据库查询,甚至可能获

【网络】协议与网络版计算器 2024-09-26 17:57

在网络通信的广阔领域中,协议(Protocol)是构建信息交换基础的基石,它们定义了数据如何在网络中的不同设备之间传输、识别、解释和响应。而网络版计算器,作为网络应用的一个简单实例,不仅展示了网络服务的实现方式,也体现了协议在其中的关键作用。以下将深入探讨网络协议的基本概念、类型、作用,并结合网络版

目录

IT 外包服务商

  • 意见投递
  • zyf6619

软件开发应用

主菜单

  • 首页
  • 软件开发
  • 计算机基础
  • Hello Halo
  • 新手必读
  • 关于本知识库
Copyright © 2024 your company All Rights Reserved. Powered by Halo.