学生做微商怎么加入/seo搜索引擎优化介绍

学生做微商怎么加入,seo搜索引擎优化介绍,长沙网页设计哪家专业,成都房价编程自学指南:java程序设计开发,网络编程基础 学习目标: 理解网络协议(TCP/IP、UDP)的核心概念 掌握Socket编程实现客户端与服务端通信 能够通过多线程处理并发网络请求 开发简单的网络应用(如聊天程序…

编程自学指南:java程序设计开发,网络编程基础

学习目标

  1. 理解网络协议(TCP/IP、UDP)的核心概念

  2. 掌握Socket编程实现客户端与服务端通信

  3. 能够通过多线程处理并发网络请求

  4. 开发简单的网络应用(如聊天程序、文件传输工具)


一、课程引入

1.1 网络编程的应用场景

  • 实时通信:聊天软件、视频会议

  • 数据传输:文件下载、云存储

  • 远程控制:物联网设备管理、服务器监控

1.2 核心概念

  • IP地址:设备的唯一标识(如192.168.1.1

  • 端口号:应用程序的通信入口(0~65535)

  • TCP vs UDP

    • TCP:可靠传输(三次握手),如网页浏览、文件传输

    • UDP:高效但不可靠,如视频流、实时游戏


二、TCP编程

2.1 服务端开发步骤

  1. 创建ServerSocket监听端口

  2. 调用accept()等待客户端连接

  3. 通过输入输出流进行数据读写

  4. 关闭资源

案例1:服务端回声程序(Echo Server)
public class TCPServer {  public static void main(String[] args) throws IOException {  try (ServerSocket serverSocket = new ServerSocket(8888)) {  System.out.println("服务端启动,等待连接...");  Socket clientSocket = serverSocket.accept();  BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));  PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);  String inputLine;  while ((inputLine = in.readLine()) != null) {  System.out.println("收到客户端消息:" + inputLine);  out.println("【服务端响应】" + inputLine);  // 回声  }  }  }  
}

2.2 客户端开发步骤

  1. 创建Socket连接服务端

  2. 通过输入输出流通信

案例2:TCP客户端
public class TCPClient {  public static void main(String[] args) throws IOException {  try (Socket socket = new Socket("localhost", 8888)) {  PrintWriter out = new PrintWriter(socket.getOutputStream(), true);  BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));  BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));  String userInput;  while ((userInput = stdIn.readLine()) != null) {  out.println(userInput);  System.out.println("服务端回复:" + in.readLine());  }  }  }  
}

三、UDP编程

3.1 数据报通信(DatagramSocket)

案例3:UDP消息发送与接收
// 发送端  
public class UDPSender {  public static void main(String[] args) throws IOException {  DatagramSocket socket = new DatagramSocket();  byte[] data = "Hello UDP".getBytes();  DatagramPacket packet = new DatagramPacket(data, data.length, InetAddress.getByName("localhost"), 9999);  socket.send(packet);  socket.close();  }  
}  // 接收端  
public class UDPReceiver {  public static void main(String[] args) throws IOException {  DatagramSocket socket = new DatagramSocket(9999);  byte[] buffer = new byte[1024];  DatagramPacket packet = new DatagramPacket(buffer, buffer.length);  socket.receive(packet);  String msg = new String(packet.getData(), 0, packet.getLength());  System.out.println("收到消息:" + msg);  socket.close();  }  
}

四、HTTP客户端开发

4.1 使用HttpURLConnection

案例4:获取网页内容
public class HTTPClient {  public static void main(String[] args) throws IOException {  URL url = new URL("https://www.example.com");  HttpURLConnection conn = (HttpURLConnection) url.openConnection();  conn.setRequestMethod("GET");  try (BufferedReader in = new BufferedReader(new InputStreamReader(conn.getInputStream()))) {  String line;  while ((line = in.readLine()) != null) {  System.out.println(line);  }  }  }  
}

五、综合案例:多线程聊天室

5.1 服务端(支持多客户端)

public class ChatServer {  private static final List<Socket> clients = new ArrayList<>();  public static void main(String[] args) throws IOException {  ServerSocket serverSocket = new ServerSocket(8888);  System.out.println("聊天室服务端启动...");  while (true) {  Socket clientSocket = serverSocket.accept();  clients.add(clientSocket);  new Thread(() -> handleClient(clientSocket)).start();  }  }  private static void handleClient(Socket clientSocket) {  try (BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()))) {  String msg;  while ((msg = in.readLine()) != null) {  System.out.println("广播消息:" + msg);  broadcast(msg, clientSocket);  }  } catch (IOException e) {  e.printStackTrace();  }  }  private static void broadcast(String msg, Socket sender) {  for (Socket client : clients) {  if (client != sender) {  try {  PrintWriter out = new PrintWriter(client.getOutputStream(), true);  out.println(msg);  } catch (IOException e) {  e.printStackTrace();  }  }  }  }  
}

5.2 客户端代码(参考案例2修改)

  • 每个客户端独立线程接收服务端广播消息


六、常见错误与最佳实践

6.1 常见错误

  • 错误1:端口被占用

    new ServerSocket(8888); // 若端口已被占用,抛出BindException

    错误2:未处理Socket超时

socket.setSoTimeout(5000); // 设置读取超时时间,避免无限等待

6.2 最佳实践

  1. 使用try-with-resources自动关闭Socket和流

  2. TCP场景选择

    • 需可靠传输 → TCP(如文件传输)

    • 需低延迟 → UDP(如实时游戏)

  3. 多线程优化:使用线程池(如ExecutorService)管理客户端连接


七、总结与练习

7.1 总结

  • TCP编程:可靠传输,需建立连接(三次握手)

  • UDP编程:高效但不可靠,适合实时场景

  • HTTP客户端:通过URLConnection访问Web服务

7.2 课后任务

  1. 实现一个TCP文件传输工具(客户端发送文件,服务端保存)

  2. 用UDP协议实现简单的时间服务器(客户端请求时间,服务端返回当前时间)

  3. 预习下一节课:反射与注解

7.3 扩展挑战

  • 基于WebSocket实现实时聊天程序(可借助Java EE或Spring框架)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/897847.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leecode797.所有可能的路径

深度优先搜索 class Solution { private:vector<vector<int>> result;vector<int> temp;void allPathsSourceTarget(vector<vector<int>> &graph,int v){if(vgraph.size()-1)result.push_back(temp);else{for(auto& adjVertex:graph[v]…

第八节:红黑树(初阶)

【本节要点】 红黑树概念红黑树性质红黑树结点定义红黑树结构红黑树插入操作的分析 一、红黑树的概念与性质 1.1 红黑树的概念 红黑树 &#xff0c;是一种 二叉搜索树 &#xff0c;但 在每个结点上增加一个存储位表示结点的颜色&#xff0c;可以是 Red和 Black 。 通过对 任何…

微信小程序threejs三维开发

微信小程序threejs开发 import * as THREE from three; const { performance, document, window, HTMLCanvasElement, requestAnimationFrame, cancelAnimationFrame, core, Event, Event0 } THREE .DHTML import Stats from three/examples/jsm/libs/stats.module.js; im…

jupyter无法转换为PDF,HTMLnbconvert failed: Pandoc wasn‘t found.

无法转为PDF 手动下载工具 https://github.com/jgm/pandoc/releases/tag/3.6.3 似乎跟我想的不大一样&#xff0c;还有新的报错 https://nbconvert.readthedocs.io/en/latest/install.html#installing-tex 不知道下的啥玩意儿 sudo apt-get install texlive-xetex texlive-fon…

使用 Excel 实现绩效看板的自动化

引言 在日常工作中&#xff0c;团队的绩效监控和管理是确保项目顺利进行的重要环节。然而&#xff0c;面临着以下问题&#xff1a; ​数据分散&#xff1a;系统中的数据难以汇总&#xff0c;缺乏一个宏观的团队执行情况视图。​看板缺失&#xff1a;系统本身可能无法提供合适…

02 windows qt配置ffmpeg开发环境搭建

版本说明 首先我使用ffmpeg版本是4.2.1 QT使用版本5.14.2 我选择是c编译 在02Day.pro⾥⾯添加ffmpeg头⽂件和库⽂件路径 win32 { INCLUDEPATH $$PWD/ffmpeg-4.2.1-win32-dev/include LIBS $$PWD/ffmpeg-4.2.1-win32-dev/lib/avformat.lib \$$PWD/ffmpeg-4.2.1-win32-dev/l…

掌握市场先机:9款销售渠道管理工具深度测评

本文主要介绍了以下9款销售渠道管理工具&#xff1a;1.纷享销客&#xff1b; 2.销帮帮&#xff1b; 3.小满CRM&#xff1b; 4.有赞&#xff1b; 5.Oracle NetSuite&#xff1b; 6.Salesforce Sales Cloud&#xff1b; 7.Cin7&#xff1b; 8.Pipedrive&#xff1b; 9.BigCommerc…

C语言基础知识04

指针 指针概念 指针保存地址&#xff0c;地址是字节的编号 指针类型和保存的地址类型要一直 使用时注意&#xff0c;把地址转换为&变量的格式来看 int a[3]; a转为&a[0] 指针的大小 64bit 固定8字节&#xff0c; 32bit 固定4字节 指针…

异常(9)

大家好,今天我们来详细介绍一下异常抛出的知识,在编写程序时,如果程序中出现错误,此时就需要将错误的信息告知给调用者,话不多说,来看. 在java中,可以借助throw关键字,抛出一个指定的异常对象,将错误对象告知给调用者,具体语法如下&#xff1a; throw new xxx("异常产生…

网络安全就业形势

网络安全是一个日益增长的行业&#xff0c;对于打算进入或转行进入该领域的人来说&#xff0c;制定一个清晰且系统的职业规划非常重要。2025年&#xff0c;网络安全领域将继续发展并面临新的挑战&#xff0c;包括不断变化的技术、法规要求以及日益复杂的威胁环境。 第一部分&am…

Linux 命名管道

文章目录 &#x1f680; 深入理解命名管道&#xff08;FIFO&#xff09;及其C实现一、命名管道核心特性1.1 &#x1f9e9; 基本概念 二、&#x1f4bb; 代码实现解析2.1 &#x1f4c1; 公共头文件&#xff08;common.hpp&#xff09;2.2 &#x1f5a5;️ 服务器端&#xff08;s…

sap 内存管理与数据共享方式

SAP内存管理 内存是程序之间为了传递数据而使用的共享存储空间 SAP内存分类&#xff1a;1、SAP内存&#xff0c;2、ABAP内存 这两种内存都是针对同一登录用户实现数据共享。 SAP内存&#xff08;SAP Memory&#xff09;和ABAP内存&#xff08;ABAP Memory&#xff09;&…

python笔记2

变量&#xff1a;含义 一个容器&#xff0c;计算机当中的存储空间。 可以理解为一个用于标识或引用数据的名字或标签。 作用&#xff1a; 可以通过定义一个变量来给需要使用多次的数据命名&#xff0c;就像一个标签一样。下次需要使用这个数据时&#xff0c;只需要通过这个变…

【Linux系统编程】信号

目录 1、信号1.1、什么是信号1.2、进程对信号的处理1.3、信号的生命周期1.4、信号处理流程1.5、信号的发送 2、kill()、raise()函数 发送信号3、alarm函数 闹钟信号4、pause函数 挂起信号、暂停5、singal 函数 捕获信号5.1、为什么返回值是上一次的处理方式5.2、练习 6、sigact…

实用小工具——快速获取数据库时间写法

最近我遇到了一个比较棘手的问题&#xff1a;在工作中&#xff0c;各个项目所使用的数据库类型各不相同。这导致我习惯性地使用Oracle的SQL语句进行编写&#xff0c;但每次完成后都会遇到报错&#xff0c;最终才意识到项目的数据库并非Oracle。为了避免这种情况&#xff0c;我需…

数据类型及sizeof,进制转换

其实数据类型可以讲很多内容&#xff0c;这里看情况需要讲多久吧。 本篇基本都是理论。 目录 数据类型的分类 基本数据类型 构造数据类型 指针类型 空类型 计算数据类型或变量所占用的内存字节数 基本语法 进制转换 二进制 二进制的概念 二进制与十进制的转换 十六进…

落雪音乐Pro 8.8.6 | 内置8条音源,无需手动导入,纯净无广告

洛雪音乐Pro版内置多组稳定音源接口&#xff0c;省去手动导入的繁琐操作&#xff0c;安装即可畅听海量音乐。延续原版无广告的纯净体验&#xff0c;支持歌单推荐与音源切换&#xff0c;满足个性化听歌需求。此版本仅支持在线播放&#xff0c;无法下载音乐&#xff0c;且与原版不…

mac安装navicat及使用

0.删除旧的 sudo rm -Rf /Applications/Navicat\ Premium.app sudo rm -Rf /private/var/db/BootCaches/CB6F12B3-2C14-461E-B5A7-A8621B7FF130/app.com.prect.NavicatPremium.playlist sudo rm -Rf ~/Library/Caches/com.apple.helpd/SDMHelpData/Other/English/HelpSDMIndexF…

【Unity】 HTFramework框架(六十二)Agent编辑器通用智能体(AI Agent)

更新日期&#xff1a;2025年3月14日。 Github源码&#xff1a;[点我获取源码] Gitee源码&#xff1a;[点我获取源码] 索引 编辑器通用智能体AIAgent类Friday&#xff08;星期五&#xff09;启用智能体设置智能体类型开放智能体权限智能体交互资源优化批处理运行代码联网搜索休闲…

MFC中使用Create或CreateDialog创建对话框失败,GetLastError错误码为1813(找不到映像文件中指定的资源类型)

文章目录 创建对话框失败示例、原因分析及解决方案示例代码错误原因解决方案 AFX_MANAGE_STATE(AfxGetStaticModuleState())作用一、功能1. 模块状态切换2. 自动状态恢复 二、为什么要用该函数&#xff1f;三、必须使用该宏的典型场景1. MFC 扩展 DLL&#xff08;Extension DLL…