【网络编程】循环面向连接服务器设计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();
        }
    }
}

结果:

image


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

image



相关文章
|
3月前
|
网络协议 Linux
【网络编程】基于TCP完成ECHO服务(更新)
【网络编程】基于TCP完成ECHO服务
|
5月前
|
Shell Windows
shell实战案例-批量ping ip(多进程限制并发)
shell实战案例-批量ping ip(多进程限制并发)
154 0
|
5月前
|
Shell 开发工具 Windows
编写脚本/root/bin/links.sh,显示正连接本主机的每个远 程主机的IPv4地址和连接数,并按连接数从大到小排序
编写脚本/root/bin/links.sh,显示正连接本主机的每个远 程主机的IPv4地址和连接数,并按连接数从大到小排序
18 0
|
6月前
|
缓存 网络协议 算法
【Python基础篇021】黏包现象丨udp的socket服务
【Python基础篇021】黏包现象丨udp的socket服务
10901 0
|
监控 Linux
Linux系统网络编程——第十九节 多路复用(1)(概念、select、poll)
等某事件就绪。即有数据可读或者可写的时候,或者达到一定的“水位线”的时候。
99 0
Linux系统网络编程——第十九节 多路复用(1)(概念、select、poll)
|
网络协议 Java
编写Java程序,实现一个简单的echo程序(网络编程TCP实践练习)
编写Java程序,实现一个简单的echo程序(网络编程TCP实践练习)
451 0
编写Java程序,实现一个简单的echo程序(网络编程TCP实践练习)
相关产品
机器翻译
推荐文章
更多