JAVAEE---网络编程2

socket API

网络编程套接字是操作系统给应用程序提供的一组API(叫做socket API)

socket可以视为应用层和传输层之间的通信桥梁

socket API也有对应的两组

由于上一节课(网络编程1)我们看到TCP和UDP差别很大,因此API差别也很大

下面我们来讲一下UDP socket和TCP socket

先讲UDP socket

UDP socket中主要涉及两个类:

1.DatagramSocket

一个DatagramSocket对象就对应到操作系统中的一个socket文件

socket文件就对应着"网卡"这种硬件设备.从socket文件读数据,本质上就是读网卡,从socket文件写数据,本质上就是写网卡.socket就像一个遥控器,它可以操作网卡.

2.DatagramPacket

DatagramPacket代表了一个UDP数据报,他是使用UDP传输数据的基本单位,每次发送/接收数据都是在传输一个DatagramPacket对象

下面我们来写一下最简单的

UDP的客户端服务器程序---回显服务(请求内容是什么,得到的响应就是什么)

回显服务器:UdpEchoServer

package network;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

// 站在服务器的角度:
// 1. 源 IP: 服务器程序本机的 IP
// 2. 源端口: 服务器绑定的端口 (此处手动指定了 9090)
// 3. 目的 IP: 包含在收到的数据报中. (客户端的IP)
// 4. 目的端口: 包含在收到的数据报中. (客户端的端口)
// 5. 协议类型: UDP
public class UdpEchoServer {
    // 进行网络编程, 第一步就需要先准备好 socket 实例~ 这是进行网络编程的大前提.
    private DatagramSocket socket = null;

    public UdpEchoServer(int port) throws SocketException {
        socket = new DatagramSocket(port);
    }

    // 启动服务器.
    public void start() throws IOException {
        System.out.println("启动服务器!");
        // UDP 不需要建立连接, 直接接收从客户端来的数据即可
        while (true) {
            // 1. 读取客户端发来的请求
            DatagramPacket requestPacket = new DatagramPacket(new byte[1024], 1024);
            socket.receive(requestPacket); // 为了接受数据, 需要先准备好一个空的 DatagramPacket 对象, 由 receive 来进行填充数据
            // 把 DatagramPacket 解析成一个 String
            String request = new String(requestPacket.getData(), 0, requestPacket.getLength(), "UTF-8");
            // 2. 根据请求计算响应(由于咱们这是一个回显服务, 2 省略)
            String response = process(request);
            // 3. 把响应写回到客户端
            DatagramPacket responsePacket = new DatagramPacket(response.getBytes(), response.getBytes().length,
                    requestPacket.getSocketAddress());
            socket.send(responsePacket);
            System.out.printf("[%s:%d] req: %s, resp: %s\n",
                    requestPacket.getAddress().toString(), requestPacket.getPort(), request, response);
        }
    }

    // 由于是回显服务, 响应就和请求一样了.
    // 实际上对于一个真实的服务器来说, 这个过程是最复杂的. 为了实现这个过程, 可能需要几万行, 几十万行代码....
    public String process(String request) {
        return request;
    }

    public static void main(String[] args) throws IOException {
        UdpEchoServer server = new UdpEchoServer(9090);
        server.start();
    }
}

下面是对代码的一些解释:

 多个进程不能绑定同一个端口,但一个进程可以绑定多个端口---->我们就把端口想象成手机号,几个人不能共用一个手机号,但是一个人可以有多个手机号

 如果一个程序需要使用网络通信,那么至少需要一个端口号(就像一个人要想,他至少需要一个手机号码)

 回显客户端:UdpEchoClient

package network;

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.Sock
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 吉林大学Java EE是一门针对企业级Java应用开发的课程。该课程旨在培养学生具有Java EE技术体系的应用能力和解决复杂企业级应用开发问题的能力。学生将学习到的主要内容包括Java EE的开发环境及其核心技术,如Servlet、JSP、EJB、JNDI、JMS等。学生将了解Web应用程序的开发,对Web应用进行部署与管理,扩展和整合应用服务器等。同时,该课程还涉及到传统的企业应用开发模型,如Struts2和Spring框架,以及现代化的全栈架构的思维方式。 在吉林大学Java EE课程中,学生将会收到专业的指导和教学,多方面的实践和项目大作业,锻炼学生的分析和解决综合性问题的能力,并且学生将能够按照企业开发标准进行软件开发和软件项目管理。该课程适合那些对企业级 Java 应用开发正在寻找机会和想法的学生。吉林大学提供的 Java EE 课程将确保学生在这个竞争激烈和日新月异的 IT 市场上有足够的技能和知识,使他们成为拥有较高职业价值的IT企业工程师。 ### 回答2: 吉林大学的JavaEE课程是学习JavaEE技术的重要课程。JavaEE指Java Enterprise Edition,是Java平台的企业版,为企业级应用提供了丰富的解决方案。JavaEE包括JavaServer Pages(JSP)、JavaServlet、Java消息服务(JMS)、JavaBean、JavaServer Faces(JSF)等技术。 在JavaEE课程中,学生将学习到JavaEE的各种技术,以及如何使用JavaEE技术进行企业级应用程序的开发。该课程通过理论和实践相结合的教学方法,让学生在学习JavaEE的同时,掌握开发企业级应用程序的能力。 在课程的学习过程中,学生将通过各种案例来深入了解JavaEE技术在实际应用中的使用。例如,学生将学习如何创建一个基于JavaEE的Web应用程序,并使用Java Servlet技术来处理用户请求,同时使用JavaServer Pages来构建Web页面。 此外,课程还将讲解JavaEE中的安全性、性能优化和调试技术,以及如何使用JavaEE技术来处理大规模数据。学生将获得JavaEE技术的丰富知识和实践经验,为将来从事企业级应用程序开发奠定坚实的基础。 ### 回答3: 吉林大学是国内一流的综合性大学,其JavaEE课程设置包含Java相关开发环境、面向对象编程思想、Java基础语法、数据库编程、web开发、Java框架及应用等内容,全面覆盖了JavaEE开发的核心技术。在吉林大学JavaEE的课程中,学生可以学到Java编程语言的基础知识,如数据类型、控制语句和基本算术操作等。同时,学生也能学到如何使用Java编写图形用户界面、网络编程、Java Servlet和JSP以及使用MVC(Model-View-Controller)框架来构建动态网站等方面的知识。除此之外,课程还会涉及到常用的Java开发工具,如Eclipse和NetBeans等,以及一些流行的JavaEE框架,如Spring、Struts和Hibernate等。这些框架是广泛应用于企业级应用开发中的,确保了学生在学习的时候能够掌握实用的技能。总的来说,吉林大学JavaEE课程的设置充分展现出了吉林大学在计算机科学领域的教学和研究水平,为学生未来的职业发展提供了坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值