Java实现socket编程案例

以下是一个基本的Java socket编程案例:

服务端代码:

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

public class Server {
    public static void main(String[] args) throws IOException {

        ServerSocket serverSocket = null;
        try {
            serverSocket = new ServerSocket(8080);
        } catch (IOException e) {
            System.err.println("Could not listen on port: 8080.");
            System.exit(1);
        }

        Socket clientSocket = null;
        try {
            System.out.println("Waiting for connection.....");
            clientSocket = serverSocket.accept();
            System.out.println("Connection successful");
        } catch (IOException e) {
            System.err.println("Accept failed.");
            System.exit(1);
        }

        PrintWriter out = new PrintWriter(clientSocket.getOutputStream(), true);
        BufferedReader in = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

        String inputLine;
        while ((inputLine = in.readLine()) != null) {
            System.out.println("Server: " + inputLine);
            out.println(inputLine);
            if (inputLine.equals("Bye."))
                break;
        }

        out.close();
        in.close();
        clientSocket.close();
        serverSocket.close();
    }
}

客户端代码:

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

public class Client {
    public static void main(String[] args) throws IOException {

        Socket socket = null;
        PrintWriter out = null;
        BufferedReader in = null;

        try {
            socket = new Socket("localhost", 8080);
            out = new PrintWriter(socket.getOutputStream(), true);
            in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        } catch (UnknownHostException e) {
            System.err.println("Don't know about host: localhost.");
            System.exit(1);
        } catch (IOException e) {
            System.err.println("Couldn't get I/O for the connection to: localhost.");
            System.exit(1);
        }

        BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
        String userInput;

        while ((userInput = stdIn.readLine()) != null) {
            out.println(userInput);
            System.out.println("Client: " + userInput);
            if (userInput.equals("Bye."))
                break;
            System.out.println("Server: " + in.readLine());
        }

        out.close();
        in.close();
        stdIn.close();
        socket.close();
    }
}

这个案例实现了一个简单的客户端和服务端之间的通信,客户端向服务端发送一条消息,服务端将其打印后返回给客户端。如果客户端发送了 "Bye.",则结束通信。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/207213.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

深度学习今年来经典模型优缺点总结,包括卷积、循环卷积、Transformer、LSTM、GANs等

文章目录 1、卷积神经网络(Convolutional Neural Networks,CNN)1.1 优点1.2 缺点1.3 应用场景1.4 网络图 2、循环神经网络(Recurrent Neural Networks,RNNs)2.1 优点2.2 缺点2.3 应用场景2.4 网络图 3、长短…

生产制造中4种导致产品成本、库存核算差错的问题!(化工/化妆品/生物制剂/混凝土等行业ODOO)

在化工/化妆品/生物制剂/混凝土等行业,因为其生产物料及产成品大都以液体(或散颗粒)形态为主,多以重量为计数方式;且液体(或散颗粒)相较于固体的较大区别就是产品计数上变数较大,固体…

什么是企业资金

我从两个方面来诠释企业资金管理: 1、企业资金管理是什么? 2、企业资金管理包括什么? 一、企业资金管理是什么? 众所周知,每个企业都有对应的财务部门,专门负责管理企业的“钱”,和企业的“帐…

企业软件手机app定制开发趋势|小程序网站搭建

企业软件手机app定制开发趋势|小程序网站搭建 随着移动互联网的快速发展和企业数字化转型的加速,企业软件手机App定制开发正成为一个新的趋势。这种趋势主要是由于企业对于手机App的需求增长以及现有的通用应用不能满足企业特定需求的情况下而产生的。 1.企业软件手…

【数据结构】—AVL树(C++实现)

🎬慕斯主页:修仙—别有洞天 💜本文前置知识: 搜索二叉树 ♈️今日夜电波:Letter Song—ヲタみん 1:36━━━━━━️💟──────── 5:35 …

Ubuntu 20.04 for NVIDIA V100 GPU安装手册

安装Ubuntu 20.04.3 LTS版本 image.png 安装Ubuntu 20.04按照安装提示,仔细选择每一项,基本默认即可。 系统中查看GPU信息 系统安装完成之后,进入系统,使用lspci 命令查询一下GPU是否存在、型号信息是什么。 bpangbobpang:\~$…

C语言中一些有关字符串的常见函数的使用及模拟实现(2)

在编程的过程中,我们经常要处理字符和字符串,为了⽅便操作字符和字符串,C语⾔标准库中提供了\n⼀系列库函数,接下来我们就学习⼀下这些函数。 在上一篇博客中已经讲解了strlen,strcpy,strcmp,st…

XXL-Job详解(二):安装部署

目录 前言环境下载项目调度中心部署执行器部署 前言 看该文章之前,最好看一下之前的文章,比较方便我们理解 XXL-Job详解(一):组件架构 环境 Maven3 Jdk1.8 Mysql5.7 下载项目 源码仓库地址链接: https://github.…

el-drawer抽屉组件弹窗遮挡问题解决

更多ruoyi-nbcio功能请看演示系统 gitee源代码地址 前后端代码: https://gitee.com/nbacheng/ruoyi-nbcio 演示地址:RuoYi-Nbcio后台管理系统 1、根据需要,需要在下面窗口里弹出抽屉组件,但出现遮挡问题,如下&…

阿里云刚崩完又崩了?部分地域云数据库控制台访问异常

11月27日,阿里云发布公告:您好!北京时间2023年11月27日 09:16起,阿里云监控发现北京、上海、杭州、深圳、青岛 、香港以及美东、美西地域的数据库产品(RDS、PolarDB、Redis等)的控制台和OpenAPI访问出现异常…

【Openstack Train安装】一、虚拟机创建

Openstack是一个云平台管理的项目,它不是一个软件。这个项目由几个主要的组件组合起来完成一些具体的工作。Openstack是一个旨在为公共及私有云的建设与管理提供软件的开源项目。它的社区拥有超过130家企业及1350位开发者,这些机构与个人将 Openstack作为…

【Windows】内网穿透实现hMailServer远程发送邮件

目录 前言1. 安装hMailServer2. 设置hMailServer3. 客户端安装添加账号4. 测试发送邮件5. 安装cpolar6. 创建公网地址7. 测试远程发送邮件8. 固定连接公网地址9. 测试固定远程地址发送邮件 前言 hMailServer 是一个邮件服务器,通过它我们可以搭建自己的邮件服务,通过cpolar内网…

【RedisTemplate】SpringDataRedis(Spring中对Redis模块的整合)

SpringDataRedis简介: SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中对Redis的集成模块就叫做SpringDataRedis。 官网地址:https://spring.io/projects/spring-data-redis 提供了对不同Redis客户端的整合&a…

C++学习之路(十四)C++ 用Qt5实现一个工具箱(增加一个Base64图片编码预览功能)- 示例代码拆分讲解

上篇文章,我们用 Qt5 实现了在小工具箱中添加了《Base64加解密功能》功能。为了继续丰富我们的工具箱,今天我们就再增加一个平时经常用到的功能吧,就是「 Base64图片编码预览 」功能。下面我们就来看看如何来规划开发一个这样的小功能并且添加…

Redis的高可用模式

1. 什么是高可用? 高可用(High Availability, HA)是指在信息技术中确保系统、服务或应用程序在绝大多数时间内都是可操作和可访问的能力。这通常涉及以下几个关键方面: 最小化停机时间: 高可用系统的目标是减少因硬件故障、系统升…

无mac电脑生成uniapp云打包私钥证书的攻略

uniapp顾名思义是一个跨平台的开发工具,大部分uniapp的开发者,其实并没有mac电脑来开发,但是生成ios的证书,官网的教程却是需要mac电脑的,那么有没有办法无需mac电脑即可生成uniapp云打包的私钥证书呢? 下…

小白都能看懂的手把手详细Git安装教程

什么是Git Git是一个源代码管理系统,旨在帮助开发人员协同工作。它是一个分布式的版本控制系统,可以有效地将代码库分支、合并和版本控制,同时还可以跟踪文件的更改、修改内容并保留历史记录。Git能够让多个开发人员同时对同一代码库进行协作…

Linux基础篇-开机自动挂载

目录 开机挂载的几种方法/etc/fstab/etc/rc.local或/etc/rc.d/rc.local 开机挂载的几种方法 修改配置文件/etc/fstab (如果是磁盘信息输错,那么系统重启时会进入维护模式,影响操作系统的正常运行.) 在/etc/rc.local内添加挂载命令…

基于ASP.NET MVC技术的图书管理系统的设计与实现

基于ASP.NET MVC技术的图书管理系统的设计与实现 摘要:图书管理系统是一套高新科学技术和图书知识信息以及传统历史文化完美结合的体现。它改变了传统图书收藏的静态书本式图书服务特征,实现了多媒体存取、远程网络传输、智能化检索、跨库无缝链接、创造…

WebSocket入门介绍及编程实战

HTTP的限制 全双工和半双工: 全双工:全双工(Full Duplex)是允许数据在两个方向上同时传输。 半双工:半双工(Half Duplex)是允许数据在两个方向上传输,但是同一个时间段内只允许一个…