网络编程(基础案例+速览复习)

简介: 网络编程实例导读Java中怎样实现网络编程:通过java.net包中 ServerSocket 和Socket这个两个核心类

网络编程实例


导读

Java中怎样实现网络编程:通过java.net包中 ServerSocket 和Socket这个两个核心类

java中如何实现网络编程 ServerSocket 和 Socket这两个核心类

  • 所谓套接字(Socket),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象。
  • 一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制。从所处的地位来讲,套接字
  • 上联应用进程,下联网络协议栈,是应用程序通过网络协议进行通信的接口,是应用程序与网络协议根进行交互的接口
  • 作用:完成两个应用程序之间的数据传输

实现简易聊天(通过案例学习网络编程)

(阅览这篇博客需要具备io流的基础操作知识,不过能力强的话,看注释也是可以的)

服务端 模拟代码

package 网络编程.Li.homework;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
/**
 * @Description:实现简易聊天的作业--服务端 
 * @auther:Li Ya Hui
 * @Time:2021年4月18日下午3:14:24
 */
public class Server {
  public static void main(String[] args) throws IOException {
    ServerSocket server = new ServerSocket(999);
    System.out.println("服务端已开启,请开始向服务端聊天吧");
    //开启监听事件,允许客户端连接
    Socket serverSocket = server.accept();
    //向用户展示  连接成功
    System.out.println("连接成功");
    //初始化输出对象
    OutputStream outputStream = null;
    PrintStream out = null;
    InputStream inputStream = null;
    InputStreamReader inputStreamReader = null;
    BufferedReader reader = null;
    while(true) 
    {
      //接受客户端的数据
      //1.获取输入流
      inputStream = serverSocket.getInputStream();
      //2.将输入流转换为输入流读取对象
      inputStreamReader = new InputStreamReader(inputStream,"UTF-8");
      //3.将输入流对象转换为缓存读取对象
      reader = new BufferedReader(inputStreamReader);
      //4.读取内容
      String getinfo = reader.readLine();
      //判断用户端输出退出
      if ("no".equals(getinfo))
      {
        System.out.println("程序退出!");
        System.exit(0);
      }
      //打印用户传来的数据
      System.out.println("获取到从客户端传递来的数据:"+getinfo);
      //发送  服务端将消息发送给客户端
      System.out.println("服务端请输入:");
      Scanner input = new Scanner(System.in);
      String sendinfo = input.next();
      //判断服务端输出退出
      if ("no".equals(getinfo))
      {
        System.out.println("程序退出!");
        System.exit(0);
      }
      //开辟输出流
      outputStream = serverSocket.getOutputStream();
      //输出流对象
      out = new PrintStream(outputStream, true, "utf-8");
      out.println(sendinfo);//传输
    }
  }
}

客户端 模拟代码

package 网络编程.Li.homework;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;
/**
 * 
 * @Description:实现简易聊天的作业--客户端
 * @auther:Li Ya Hui
 * @Time:2021年4月18日下午3:43:11
 */
public class Client {
  public static void main(String[] args) throws UnknownHostException, IOException {
    //开启服务端 接口
    Socket Socket = new Socket("localhost",999);
    //创建扫描器
    Scanner input = new Scanner(System.in);
    //初始化输入输出流对象
    OutputStream outputStream = null;
    PrintStream out = null;
    InputStream inputStream = null;
    InputStreamReader inputStreamReader = null;
    BufferedReader reader = null;
    while (true) {
      //发送:客户端向服务端发送数据
      System.out.println("客户端请输入:");
      String sendinfo = input.nextLine();
      //获取输出流
      outputStream = Socket.getOutputStream();//获取输出流
      //获取一个输出对象
      out = new PrintStream(outputStream,true,"utf-8");
      out.println(sendinfo);//传输
      if ("no".equals(sendinfo)) 
      {
        System.out.println("程序退出!");
        System.exit(0);
      }
      //2.接受:从客户端接受服务端传递来的信息
      //获取输入流
      inputStream = Socket.getInputStream();
      //将输入流转换为输入流读取对象
      inputStreamReader = new InputStreamReader(inputStream,"utf-8");
      //将输入流读取对象转换为缓存读取对象
      reader = new BufferedReader(inputStreamReader);
      String getInfo = reader.readLine();
      System.out.println("获取到从服务端传递来的数据:"+getInfo);
    }
  }
}

网络编程——注意事项:

网络编程小结

18.png19.png

目录
相关文章
|
2月前
|
安全 算法 网络安全
网络安全与信息安全:构建数字世界的坚固防线在数字化浪潮席卷全球的今天,网络安全与信息安全已成为维系社会秩序、保障个人隐私和企业机密的关键防线。本文旨在深入探讨网络安全漏洞的本质、加密技术的前沿进展以及提升公众安全意识的重要性,通过一系列生动的案例和实用的建议,为读者揭示如何在日益复杂的网络环境中保护自己的数字资产。
本文聚焦于网络安全与信息安全领域的核心议题,包括网络安全漏洞的识别与防御、加密技术的应用与发展,以及公众安全意识的培养策略。通过分析近年来典型的网络安全事件,文章揭示了漏洞产生的深层原因,阐述了加密技术如何作为守护数据安全的利器,并强调了提高全社会网络安全素养的紧迫性。旨在为读者提供一套全面而实用的网络安全知识体系,助力构建更加安全的数字生活环境。
|
4月前
|
网络协议
Qt中的网络编程(Tcp和Udp)运用详解以及简单示范案例
Tcp和Udp是我们学习网络编程中经常接触到的两个通讯协议,在Qt也被Qt封装成了自己的库供我们调用,对于需要进行网络交互的项目中无疑是很重要的,希望这篇文章可以帮助到大家。 是关于Qt中TCP和UDP的基本使用和特点:
635 7
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
深度学习入门案例:运用神经网络实现价格分类
深度学习入门案例:运用神经网络实现价格分类
|
6月前
|
数据采集 XML 数据格式
Haskell网络爬虫:视频列表获取案例分析
Haskell网络爬虫:视频列表获取案例分析
|
1月前
|
机器学习/深度学习 存储 自然语言处理
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
深度学习入门:循环神经网络------RNN概述,词嵌入层,循环网络层及案例实践!(万字详解!)
|
6月前
|
存储 分布式计算 监控
Hadoop【基础知识 01+02】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
【4月更文挑战第3天】【分布式文件系统HDFS设计原理+特点+存储原理】(部分图片来源于网络)【分布式计算框架MapReduce核心概念+编程模型+combiner&partitioner+词频统计案例解析与进阶+作业的生命周期】(图片来源于网络)
307 2
|
3月前
|
数据采集 自然语言处理 监控
【优秀python毕设案例】基于python django的新媒体网络舆情数据爬取与分析
本文介绍了一个基于Python Django框架开发的新媒体网络舆情数据爬取与分析系统,该系统利用Scrapy框架抓取微博热搜数据,通过SnowNLP进行情感分析,jieba库进行中文分词处理,并以图表和词云图等形式进行数据可视化展示,以实现对微博热点话题的舆情监控和分析。
138 2
【优秀python毕设案例】基于python django的新媒体网络舆情数据爬取与分析
|
3月前
|
网络协议 Java
一文讲明TCP网络编程、Socket套接字的讲解使用、网络编程案例
这篇文章全面讲解了基于Socket的TCP网络编程,包括Socket基本概念、TCP编程步骤、客户端和服务端的通信过程,并通过具体代码示例展示了客户端与服务端之间的数据通信。同时,还提供了多个案例分析,如客户端发送信息给服务端、客户端发送文件给服务端以及服务端保存文件并返回确认信息给客户端的场景。
一文讲明TCP网络编程、Socket套接字的讲解使用、网络编程案例
|
3月前
|
网络协议 网络架构
【网络工程师配置篇】BGP联盟配置案例及分析(超级干货)
【网络工程师配置篇】BGP联盟配置案例及分析(超级干货)
268 2
|
3月前
|
网络协议 网络架构
【网络工程师配置篇】VRRP与BFD联动配置案例
【网络工程师配置篇】VRRP与BFD联动配置案例