Java网络编程:服务器端响应(字符串、二进制和对象)

在Java网络编程中,服务器通过ServerSocket类监听客户端连接,并使用Socket的输入输出流向客户端发送响应。响应可以是字符串、二进制数据或序列化对象,具体取决于应用需求。本文将通过三个示例展示如何实现这些响应类型,结合权威资源,提供从基础到实践的全面指南。内容适合初学者和中级开发者,旨在帮助读者掌握Java服务器端编程的核心技术。

1. 服务器端编程基础

ServerSocket是Java java.net包中的核心类,用于在服务器端创建套接字,监听特定端口以接受客户端连接。与客户端使用的Socket类不同,ServerSocket专注于等待连接,而Socket用于实际通信。以下是服务器端编程的基本步骤 流程:

  1. 创建ServerSocket:绑定到指定端口。
  2. 接受连接:调用accept()方法,等待客户端连接,返回Socket对象。
  3. 处理通信:通过Socket的输入输出流与客户端交换数据。

本文将重点探讨如何通过Socket的输出流发送不同类型的响应:字符串、二进制数据和序列化对象。

1.1 响应类型的选择

响应类型 适用场景 使用的流类 优点 缺点
字符串 文本协议(如HTTP、Echo) BufferedReaderPrintWriter 易于调试,人类可读 效率较低,需处理字符编码
二进制 高效数据传输(如时间戳、图像) DataInputStreamDataOutputStream 高效,格式精确 需定义协议,调试复杂
对象 复杂数据结构 ObjectInputStreamObjectOutputStream 简化复杂数据传输 序列化开销,需确保对象可序列化

2. 示例一:Echo Server - 字符串响应

2.1 功能概述

Echo Server是一个简单的服务器,它接收客户端发送的文本行并原样返回,常用于测试网络连接或调试客户端程序。它使用BufferedReader读取客户端输入,PrintWriter发送响应,确保数据以文本形式传输。

2.2 代码实现

以下是Echo Server的完整实现:

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

public class EchoServer {
    protected ServerSocket sock;
    public final static int ECHOPORT = 7;
    protected boolean debug = true;

    public static void main(String[] args) {
        int p = ECHOPORT;
        if (args.length == 1) {
            try {
                p = Integer.parseInt(args[0]);
            } catch (NumberFormatException e) {
                System.err.println("Usage: EchoServer [port#]");
                System.exit(1);
            }
        }
        new EchoServer(p).handle();
    }

    public EchoServer(int port) {
        try {
            sock = new ServerSocket(port);
        } catch (IOException e) {
            System.err.println("I/O error in setup");
            System.err.println(e);
            Sys
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

面朝大海,春不暖,花不开

您的鼓励是我最大的创造动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值