IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 系统运维 -> 【计网实验】Java网络编程 -> 正文阅读

[系统运维]【计网实验】Java网络编程

网络编程的目的是直接或间接通过网络协议与其他计算机进行通信,因此网络编程的重点就是找到主机和找到进程。关于TCP/IP的知识这里不再赘述了,下面直接步入正题。

URL编程

从URL读取万维网资源
首先生成URL的时候需要进行异常处理。
public URL(String sepc)

try{
	URL url=new URL("https://baidu.com");
}catch(Exception ex){

}

得到一个URL对象后可以读取指定的www资源,这时将使用URL的方法openStream()

InputStream openStream();

读取百度网站资源,注意utf-8,避免出现乱码情况。

import java.io.*;
import java.net.*;

public class TestWeb {
    public static void main(String[] args) {
        // 创建URL对象
        try {
            URL url = new URL("https://www.baidu.com");
            BufferedReader in = new BufferedReader(new InputStreamReader(url.openStream(), "utf-8"));
            String input;
            while ((input = in.readLine()) != null) {
                System.out.println(input);
            }
            in.close();
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }
}

Socket编程

两个程序通过一个双向的通信连接数据交换,这个双向链路的一端为Socket,称为套接字。生成Socket有三个参数,分别是IP地址,传输层协议,使用的端口号。
工作过程如下:
1.创建Socket
2.打开连接到Socket的输入/输出流
3.按照一定的协议对Socket进行读写操作
4.关闭Socket
再java.net.*;中提高两个类,分别是Socket以及ServerSocket。
下面以计网实验为例

计网实验

题目要求:
利用Java语言提供的Socket技术,建立一个C/S模式的应用,允许客户端用户输入2个整数,服务器端接收这2个整数,并计算出它们的和、差、积、商,最后送回客户端。

下面附代码:
注意,运行的时候先运行服务器端程序,再运行客户端程序(同时打开,否则会报错)

服务器端程序:

import java.net.*;
import java.io.*;

public class TestServer {
    public static void main(String[] args) {
        try {
            ServerSocket ss = new ServerSocket(8888);
            System.out.println("启动服务器....");
            Socket s = ss.accept();
            System.out.println("客户端:" + s.getInetAddress().getLocalHost() + "已连接到服务器");

            BufferedReader br = new BufferedReader(new InputStreamReader(s.getInputStream()));
            // 读取客户端发送来的消息
            String mess = br.readLine();
            System.out.println("客户端发送来2个整数:" + mess);
            String[] tokens = mess.split(" ");
            int x = Integer.parseInt(tokens[0]);
            int y = Integer.parseInt(tokens[1]);

            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
            // bw.write(mess + "1234\n");
            int x1 = x + y, x2 = x - y, x3 = x * y;
            double x4 = (double) x * 1.0 / (double) y;
            bw.write("两数之和:" + x1 + "   两数之差:" + x2 + "   两数之积:" + x3 + "   两数之商:" + x4 + "\n");
            bw.flush();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端程序:

import java.net.*;
import java.io.*;
import java.util.Scanner;

public class TestClient {
    public static void main(String[] args) {
        try {
            Socket s = new Socket("127.0.0.1", 8888);

            // 构建IO
            InputStream is = s.getInputStream();
            OutputStream os = s.getOutputStream();

            BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(os));
            System.out.println("请输入两个整数:");
            Scanner sys = new Scanner(System.in);
            String str = sys.nextLine();
            bw.write("" + str + "\n");
            bw.flush();
            // 读取服务器返回的消息
            BufferedReader br = new BufferedReader(new InputStreamReader(is));
            String mess = br.readLine();
            System.out.println("服务器:" + mess);
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

实验截图:
在这里插入图片描述

  系统运维 最新文章
配置小型公司网络WLAN基本业务(AC通过三层
如何在交付运维过程中建立风险底线意识,提
快速传输大文件,怎么通过网络传大文件给对
从游戏服务端角度分析移动同步(状态同步)
MySQL使用MyCat实现分库分表
如何用DWDM射频光纤技术实现200公里外的站点
国内顺畅下载k8s.gcr.io的镜像
自动化测试appium
ctfshow ssrf
Linux操作系统学习之实用指令(Centos7/8均
上一篇文章      下一篇文章      查看所有文章
加:2022-06-06 17:33:28  更:2022-06-06 17:33:30 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/18 17:35:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码