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 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 基于TCP的网络编程 -> 正文阅读

[网络协议]基于TCP的网络编程

使用基于TCP的网络编程方法,完成远程计算等差数列的前n项和功能。

?
(1)客户端将一等差数列的首项a1,公差d和项数n发送给服务器;

?
?(2)服务器端接收到数据后对接收到的数据进行解析,将前n项和的计算结果发送给客户端;

?
?(3)客户端收到后输出到控制台。

?
?要求上传源代码和服务器端和客户端的程序运行结果截图。

=========================================================
服务端

package MoocPart11_01_01;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Demo class
 *
 * @author Laccoliths
 * @date 2021/11/13
 */

/**
 * 服务端
 */
public class server {
    public static void main(String[] args) throws IOException {
        //1.创建服务器套接字,并指定端口号
        ServerSocket listener=new ServerSocket(8888);
        System.out.println("服务端已启动...");
        //2 接受客户端连接,并返回客户端套接字
        //返回的是客户端套字
        Socket socket = listener.accept();
        //3. 获取输入输出流
        //4 处理
        BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line=br.readLine();
        // 以,为分隔符分割字符串
        String[] input = line.split(",");
        int a1 = Integer.parseInt(input[0]);
        int d = Integer.parseInt(input[1]);
        int n = Integer.parseInt(input[2]);
        double result = n*a1+n*(n-1)/d;
//        System.out.println("首项为:"+a1+"公差为:"+d+"项数为:"+n+",的前n项和为:" +result);
        //服务端回复客户端
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()));
        bw.write("首项为:"+a1+",公差为:"+d+",项数为:"+n+",的前n项和为:" +result);
        bw.newLine();
        bw.flush();
        // 5 关闭
        bw.close();
        br.close();
        socket.close();
        listener.close();
    }
}

客户端

package MoocPart11_01_01;

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

/**
 *
 * @author Laccoliths
 * @date 2021/11/13
 */

/**
 * 客户端
 */
public class TCPclient {
    public static void main(String[] args) throws IOException {
        //1.创建客户端套接字,并指定服务器地址和端口号
        Socket socket=new Socket("127.0.0.1",8888);
        //2.获取输入或者输出流
        //客户端是向服务端发消息   输出
        //3.处理
        String str = "1,2,3";
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()));
        bw.write(str);
        bw.newLine();
        bw.flush();
        System.out.println("输入内容:"+str);
        //接收服务端回复
        BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String s = br.readLine();
        System.out.println(s);
        //4.关闭

        br.close();
        bw.close();
        socket.close();
    }
}

使用基于TCP的网络编程方法,完成远程小写转换和校验功能。

?
(1)客户端键盘录入几个字符,发送到服务器端。

?
(2)服务器端将接收到的字符进行小写处理(即将所有字母转化为小写),并向客户端发出转换后的字符串作为响应。

?
(3)客户端对收到的字符串进行处理校验。如果校验成功,返回“处理成功”给服务器作为响应,并将其保存到character.txt文件中;否则返回“处理错误”给服务器作为响应。

?
要求上传源代码和服务器端和客户端程序运行结果截图。

=========================================================
服务端

package MoocPart10_01_02;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 *
 * @author Laccoliths
 * @date 2021/11/13
 */

/**
 * 服务端
 */
public class server {
    public static void main(String[] args) throws IOException {
        //1.创建服务器套接字,并指定端口号
        ServerSocket listener=new ServerSocket(8888);
        System.out.println("服务端已启动...");
        //2 接受客户端连接,并返回客户端套接字
        //返回的是客户端套字
        Socket socket = listener.accept();
        //3. 获取输入输出流
        //4 处理
        BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String line=br.readLine();
        String lower = line.toLowerCase();
        System.out.println(lower);

        //服务端回复客户端
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()));
        if (checkString(lower)) {
                bw.write("校验成功!");
                toTxt(lower);
        }else {
            bw.write("校验错误!");
        }
//        bw.write(lower);
        bw.newLine();
        bw.flush();
        // 5 关闭
        bw.close();
        br.close();
        socket.close();
        listener.close();
    }

    /**
     * 检验是否是小写,全小写返回true,否则返回false
     * @param str
     */
    private static boolean checkString(String str) {
        char ch;

        boolean capitalFlag = false;

        boolean lowerCaseFlag = false;

        boolean numberFlag = false;

        for(int i=0;i < str.length();i++) {
            ch = str.charAt(i);

            if( Character.isDigit(ch)) {
                numberFlag = true;

            }

            else if (Character.isUpperCase(ch)) {
                capitalFlag = true;

            } else if (Character.isLowerCase(ch)) {
                lowerCaseFlag = true;

            }

            if(numberFlag && capitalFlag && lowerCaseFlag) {
                return false;
            }

        }

        return true;

    }

    /**
     * 将字符串写入D:/character.txt文件中
     * @param str
     * @throws IOException
     */
    private static void toTxt(String str) throws IOException {

        FileWriter fileWriter = new FileWriter("D:/character.txt");
        fileWriter.write(str);
        fileWriter.close();

    }
}

客户端

package MoocPart10_01_02;

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

/**
 * @author Laccoliths
 * @date 2021/11/13
 */

/**
 * 客户端
 */
public class TCPclient {
    public static void main(String[] args) throws IOException {
        //1.创建客户端套接字,并指定服务器地址和端口号
        Socket socket=new Socket("127.0.0.1",8888);
        //2.获取输入或者输出流
        //客户端是向服务端发消息   输出
        //3.处理
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter( socket.getOutputStream()));
        String str = "JavaProgramingTechnique";
        bw.write(str);
        System.out.println("输入内容:"+str);
        bw.newLine();
        bw.flush();
        //接收服务端回复
        BufferedReader br=new BufferedReader(new InputStreamReader(socket.getInputStream()));
        String s = br.readLine();
        System.out.println(s);
        //4.关闭

        br.close();
        bw.close();
        socket.close();
    }
}

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-11-15 16:11:28  更:2021-11-15 16:12:55 
 
开发: 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年11日历 -2024/11/26 7:18:35-

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