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

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

题目:

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


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


要求:


1.定义一个应用层协议

2.服务器算法设计

3.源代码

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连接后,返回结果正确

相关文章
|
2月前
|
机器学习/深度学习 人工智能 运维
企业内训|LLM大模型在服务器和IT网络运维中的应用-某日企IT运维部门
本课程是为某在华日资企业集团的IT运维部门专门定制开发的企业培训课程,本课程旨在深入探讨大型语言模型(LLM)在服务器及IT网络运维中的应用,结合当前技术趋势与行业需求,帮助学员掌握LLM如何为运维工作赋能。通过系统的理论讲解与实践操作,学员将了解LLM的基本知识、模型架构及其在实际运维场景中的应用,如日志分析、故障诊断、网络安全与性能优化等。
87 2
|
3天前
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
18 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
2天前
|
缓存 负载均衡 监控
HTTP代理服务器在网络安全中的重要性
随着科技和互联网的发展,HTTP代理IP中的代理服务器在企业业务中扮演重要角色。其主要作用包括:保护用户信息、访问控制、缓存内容、负载均衡、日志记录和协议转换,从而在网络管理、性能优化和安全性方面发挥关键作用。
17 2
|
26天前
|
弹性计算 监控 数据库
制造企业ERP系统迁移至阿里云ECS的实例,详细介绍了从需求分析、数据迁移、应用部署、网络配置到性能优化的全过程
本文通过一个制造企业ERP系统迁移至阿里云ECS的实例,详细介绍了从需求分析、数据迁移、应用部署、网络配置到性能优化的全过程,展示了企业级应用上云的实践方法与显著优势,包括弹性计算资源、高可靠性、数据安全及降低维护成本等,为企业数字化转型提供参考。
52 5
|
2月前
|
存储 安全 数据可视化
提升网络安全防御有效性,服务器DDoS防御软件解读
提升网络安全防御有效性,服务器DDoS防御软件解读
56 1
提升网络安全防御有效性,服务器DDoS防御软件解读
|
1月前
|
存储 关系型数据库 MySQL
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
查询服务器CPU、内存、磁盘、网络IO、队列、数据库占用空间等等信息
600 2
|
1月前
|
物联网 5G 数据中心
|
2月前
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
45 5
|
2月前
|
安全 网络架构
无线网络:连接未来的无形纽带
【10月更文挑战第13天】
77 8
下一篇
DataWorks