当前位置:   article > 正文

【计网实验】Java网络编程_利用java语言提供的socket技术,建立一个c/s模式的应用,允许客户端用户输入2个整数

利用java语言提供的socket技术,建立一个c/s模式的应用,允许客户端用户输入2个整数

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

URL编程

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

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

}
  • 1
  • 2
  • 3
  • 4
  • 5

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

InputStream openStream();
  • 1

读取百度网站资源,注意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();
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

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();
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

客户端程序:

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();
        }
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/172104
推荐阅读
相关标签
  

闽ICP备14008679号