首页 > 编程语言 >基于TCP的网络编程

基于TCP的网络编程

时间:2024-09-20 20:50:47浏览次数:3  
标签:基于 socket 编程 TCP String bw close new 客户端

@[toc]

使用基于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
 */

/**
 * 服务端
 */
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
 */

/**
 * 客户端
 */
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();
    }
}

标签:基于,socket,编程,TCP,String,bw,close,new,客户端
From: https://blog.51cto.com/Laccoliths/12068359

相关文章

  • STM32F407单片机编程入门(九)低功耗模式实战含源码
    文章目录一.概要二.STM32单片机低功耗基本介绍三.STM32F407单片机待机模式介绍四.CubeMX配置一个待机低功耗例程五.CubeMX工程源代码下载六.小结一.概要在生活中通过关掉电器组件可以实现省电节能的目的,同样的道理单片机也可以通过这种方法实现降低功耗。单片机是由......
  • NOI Linux 基础知识与编程环境
    在计算机早期历史中,终端专指用户与计算机系统进行交互的物理设备,包括命令行终端和图形化终端等。在流行的UNIX、Linux发行版中,可以使用快捷键调出命令行终端模式,也可以在图形界面中使用终端仿真器(terminalemulator)来模拟命令行终端。在桌面版Ubuntu中常见的终端仿真器有“终......
  • [Java原创精品]基于Springboot+Vue的座位预约系统、自习室预约管理、微信二维码扫描模
    项目提供:完整源码+数据库sql文件+数据库表Excel文件1、项目功能描述本项目为双角色,用户和管理员,用户使用前台,管理员使用后台。1.1注册注册功能:填写用户名、密码进行注册。(“我已阅读同意《隐私政策》和《服务条款》”没有做后续,只是单纯有这样一行文字做模拟)1.2......
  • 基于 ollama 下载,部署AI 大模型 提供API 服务
    1.下载 ollama   https://ollama.com/   2.安装完成后,没有操作界面(只能CLI)3. 检测安装是否成功 ollama--version4.常用命令: ollamahelp修改默认模型下载位置:‌概述‌:Ollama默认将模型保存在‌C盘(‌Windows)、~/.ollama/models(‌MacOS)或/usr/share/ollama/.......
  • Matlab 基于NRBO-Transformer-LSTM-SVM多特征分类预测 (多输入单输出)[24年算法]
    基于NRBO-Transformer-LSTM-SVM多特征分类预测(多输入单输出)NRBO优化参数为隐藏层节点数、正则化系数、学习率!你先用你就是创新!!!1.程序已经调试好,无需更改代码替换数据集即可运行!!!数据格式为excel!2.评价指标包含:分类准确率、灵敏度、特异性曲线下面积(AUC值)、卡帕(Kappa)系......
  • 基于JSP客户关系管理系统的设计与实现的计算机毕设源码+论文
    摘要:本客户关系管理系统是使用JSP编程语言和SQLServer2000数据库共同来完成的,采用面向对象方法,对客户关系管理系统进行设计与实现。分析设计了客户关系管理系统的静态模型和动态模型,完成了系统开发的分析、设计和实现的工作。本客户关系管理系统通过Web方式完成用户与系统的交互,系......
  • 基于spring boot+vue+mysql的汽车评论分类系统
    结尾名片获取源码开发语言:Java框架:SpringBoot持久化框架:Mybatis-plusJDK版本:JDK1.8服务器:tomcat7\8\9数据库:mysql5.7以上数据库工具:Navicat11以上开发软件:eclipse/myeclipse/ideaMaven:Maven3.5.4浏览器:谷歌浏览器\Edge功能描述随着科学技术的飞速发展,社会的方方......
  • 基于spring boot+vue+mysql的电子招投标系统
    结尾名片获取源码开发语言:Java框架:SpringBoot持久化框架:Mybatis-plusJDK版本:JDK1.8服务器:tomcat7\8\9数据库:mysql5.7以上数据库工具:Navicat11以上开发软件:eclipse/myeclipse/ideaMaven:Maven3.5.4浏览器:谷歌浏览器\Edge功能描述随着信息技术的不断发展,电子招投标......
  • 【F153】基于Springboot+vue实现的无人智慧超市管理系统
    主营内容:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app等设计与开发。收藏点赞不迷路,关注作者有好处项目描述本系统结合现今主流管理系统的功能模块以及设计方式进行分析,使用Java语言和Springboot框架进行开发设计,具体研究......
  • tcpdump使用方法
    一、centos上可以采用下面的命令进行安装。yuminstalltcpdump二、实例:1、监视指定网络接口的数据包即监听指定网卡的数据包,若不指定网卡,默认tcpdump只会监视第一个网络接口。如监听eth0网卡,如下:tcpdump -i eth02、监视指定主机或ip的数据包格式:tcpdump host host......