【网络编程】循环面向连接服务器设计ECHO&TIME

简介: 【网络编程】循环面向连接服务器设计ECHO&TIME

题目:

构建循环,面向连接ECHO&TIME服务器


( 设计一个基于TCP的应用层协议,服务器收到客户发来的字符串后,加上时间标记再回射给客户。)


要求:


定义一个应用层协议

服务器算法设计

源代码

1. 定义一个应用层协议

基于TCP的ECHO&TIME的连接应用,绑定端口6789并实行监听,一旦建立了连接,当前的日期和时间就会和客户发送的消息进行连接后,以ascii字符串的形式被送出连接, 该服务在发送完后立即关闭连接


2. 服务器算法设计

1.创建套接字并将其绑定到他所提供服务的端口上,自定义为6789


2.将给端口设置为被动模式,使其准备为服务器所用


3.从该套接字上接受下一个连接请求,构造获得该连接的套接字


4.读取来自客户的需求,构造响应,按照应用协议向客户发回响应,此处构造的响应应为,先获取客户端传递过来的消息,再调用本地的time获取时间,然后拼接后返回给客户


5..关闭连接,并返回步骤3以接受新的连接


3. 源代码

import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.util.Calendar;
import java.util.Date;
import java.util.TimeZone;
public class TCPServer
{
  public static void main(String argv[]) throws Exception
  {
    //设置服务器接收和发送的字符
    String clientSentence;
    String returnSentence;
    //开启服务端口6789
    ServerSocket welcomeSocket = new ServerSocket(6789);
    //时间格式化
    SimpleDateFormat sdf = (SimpleDateFormat)DateFormat.getDateTimeInstance();
    Calendar calendar= Calendar.getInstance();
    System.out.println("服务器已经开启...");
    while (true)
    {
      //监听获取套接字
      Socket connectionSocket = welcomeSocket.accept();
      BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
      DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
      //读入用户输入
      clientSentence = inFromClient.readLine();
      returnSentence=clientSentence;
      //获取时间后拼接
      returnSentence+=sdf.format(calendar.getTime());
      //写回
      outToClient.writeBytes(returnSentence);
      connectionSocket.close();
    }
  }
}

结果:


使用telnet连接后,返回结果正确



相关文章
|
13天前
|
传感器 运维 物联网
蓝牙Mesh网络:连接未来的智能解决方案
蓝牙Mesh网络:连接未来的智能解决方案
89 12
|
2月前
|
缓存 应用服务中间件 nginx
Web服务器的缓存机制与内容分发网络(CDN)
【8月更文第28天】随着互联网应用的发展,用户对网站响应速度的要求越来越高。为了提升用户体验,Web服务器通常会采用多种技术手段来优化页面加载速度,其中最重要的两种技术就是缓存机制和内容分发网络(CDN)。本文将深入探讨这两种技术的工作原理及其实现方法,并通过具体的代码示例加以说明。
87 1
|
2月前
|
监控 安全 数据挖掘
网络游戏服务器如何有效防护DDoS与CC攻击
随着网络游戏行业的蓬勃发展,其背后的服务器架构日益复杂,同时也面临着前所未有的网络安全威胁。其中,分布式拒绝服务(DDoS)和CC(Challenge Collapsar,一种针对网页的攻击方式)攻击尤为突出,它们通过大量伪造请求或恶意流量,使服务器资源耗尽,导致服务中断或响应缓慢。因此,保障网络游戏服务器的安全,有效防护DDoS与CC攻击,已成为游戏行业亟待解决的问题。
|
16天前
|
存储 弹性计算 测试技术
阿里云服务器实例规格vCPU、内存、网络带宽、网络收发包PPS、连接数等性能指标详解
阿里云服务器ECS实例可以分为多种实例规格族。根据CPU、内存等配置,一种实例规格族又分为多种实例规格。而实例规格又包含vCPU、处理器、内存、vTPM、本地存储、网络带宽、网络收发包PPS、连接数、弹性网卡、云盘带宽、云盘IOPS等指标,本文为大家详细介绍实例规格的这些指标,以供大家了解和选择。
阿里云服务器实例规格vCPU、内存、网络带宽、网络收发包PPS、连接数等性能指标详解
|
5天前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
45 5
|
9天前
|
数据安全/隐私保护
Haskell网络编程:代理服务器的高级使用技巧
Haskell网络编程:代理服务器的高级使用技巧
|
9天前
|
JavaScript 前端开发
vue配合axios连接express搭建的node服务器接口_简单案例
文章介绍了如何使用Express框架搭建一个简单的Node服务器,并使用Vue结合Axios进行前端开发和接口调用,同时讨论了开发过程中遇到的跨域问题及其解决方案。
12 0
vue配合axios连接express搭建的node服务器接口_简单案例
|
21天前
|
存储 运维 网络协议
运维的基本概念:服务器和网络基础知识
运维的基本概念:服务器和网络基础知识
41 0
运维的基本概念:服务器和网络基础知识
|
2月前
|
数据可视化 Ubuntu Linux
PyCharm连接远程服务器配置的全过程
相信很多人都遇见过这种情况:实验室成员使用同一台服务器,每个人拥有自己的独立账号,我们可以使用服务器更好的配置完成实验,毕竟自己哪有money拥有自己的3090呢。 通常服务器系统采用Linux,而我们平常使用频繁的是Windows系统,二者在操作方面存在很大的区别,比如我们实验室的服务器采用Ubuntu系统,创建远程交互任务时可以使用Terminal终端或者VNC桌面化操作,我觉得VNC很麻烦,所以采用Terminal进行实验,但是Terminal操作给我最不好的体验就是无法可视化中间实验结果,而且实验前后的数据上传和下载工作也让我头疼不已。
|
2月前
|
网络协议 C# 开发者
WPF与Socket编程的完美邂逅:打造流畅网络通信体验——从客户端到服务器端,手把手教你实现基于Socket的实时数据交换
【8月更文挑战第31天】网络通信在现代应用中至关重要,Socket编程作为其实现基础,即便在主要用于桌面应用的Windows Presentation Foundation(WPF)中也发挥着重要作用。本文通过最佳实践,详细介绍如何在WPF应用中利用Socket实现网络通信,包括创建WPF项目、设计用户界面、实现Socket通信逻辑及搭建简单服务器端的全过程。具体步骤涵盖从UI设计到前后端交互的各个环节,并附有详尽示例代码,助力WPF开发者掌握这一关键技术,拓展应用程序的功能与实用性。
68 0
下一篇
无影云桌面