Java网络编程:关于入门socket的几个疑问

java网络编程详解(分层,TCP/IP,网络基础,协议) 计算机网络: 计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 从逻辑功能上看,计算机网络是以传输信息为基础目的,用通信线路将多个计算机连接起来的计算机系统的集合,一个计算机网络组成包括传输介质和通信设备。 虽然网络类型的划分标准各种各样,但是从地理范围划 阅读详情

1.关闭输入输出流会自动关闭socket实例:关闭输出流之后再次获取输入流会抛错。

Socket socket = new Socket("127.0.0.1", 8001);
OutputStream outputStream = socket.getOutputStream();
DataOutputStream out = new DataOutputStream(outputStream);
out.writeUTF("Hello World");
out.flush();

outputStream.close();
System.out.println("socket是否关闭:" + socket.isClosed());// 输出true

InputStream inputStream = socket.getInputStream();

 

2.基于UDP连接demo:

问题:相同地址(127.0.0.1 8088)只能实例化一个DatagramSocket实例,服务器启动之后客户端启动会报地址占用错误!

代码如下:

服务端:

import java.io.IOException;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

/**
 * @Author: Lon
 * @Date: 2019/5/27 14:08
 * @Description:
 */
public class DatagramSocketServer {

    public static void main(String[] args) {
        try {
            System.out.println("启动服务,等待连接");
            byte[] bytes = new byte[1024];
            DatagramPacket packet = new DatagramPacket(bytes, bytes.length);

            DatagramSocket socket = new DatagramSocket(8088);
            socket.receive(packet);

            String string = new String(bytes, 0, bytes.length);
            System.out.println("收到消息:" + string);
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

客户端:

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

/**
 * @Author: Lon
 * @Date: 2019/5/27 13:59
 * @Description:
 */
public class DatagramSocketClient {

    public static void main(String[] args) {
        try {
            byte[] data = "Hello World...".getBytes();
            InetAddress address = InetAddress.getLocalHost();

            DatagramPacket packet = new DatagramPacket(data, data.length, address, 8088);
            DatagramSocket socket = new DatagramSocket();

            socket.send(packet);
            socket.close();
        } catch (UnknownHostException e) {
            e.printStackTrace();
        } catch (SocketException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

 

用Java实现基于Socket的网络编程 使用Java语言,采用TCP协议,实现一对一、一对多的通信(无用户界面) 阅读详情

相关推荐

Java网络编程:Socket与InetAddress

Java的网络编程允许开发者创建能够在互联网上通信的应用程序。java.net包是Java网络功能的核心,包含了用于TCP/IP通信的Socket类和用于地址解析的类。这些类简化了底层网络操作,使开发者能够专注于应用程序逻辑。平台无关性:Java代码可在不同操作系统上运行,无需修改。易用性:API设计直观,即使是网络编程新手也能快速上手。健壮性:内置的异常处理机制(如)有助于管理网络错误。本文将重点介绍如何使用Socket连接服务器以及使用查找和报告网络地址。Socket。

静水深流 729

java.net.DatagramSocket

此类表示用于发送和接收数据报包的套接字。 数据报套接字是分组传送服务的发送或接收点。在数据报套接字上发送或接收的每个数据包都是单独寻址和路由的。从一台机器发送到另一台机器的多个分组可以被不同地路由,并且可以以任何顺序到达。 在可能的情况下,新构造DatagramSocket的 SO_BROADCAST插座选项已启用,以便允许广播数据报的传输。为了接收广播数据包,应将DatagramSocket绑...

书香水墨 3096

Unity游戏Mono注入实战:从反编译到功能扩展

本文详细介绍了Unity游戏Mono注入的完整实战流程,从使用dnSpy反编译游戏核心逻辑,到编写自定义C#功能DLL,再到利用SharpMonoInjector进行动态注入。文章深入讲解了如何通过Harmony库拦截修改游戏方法,并介绍了使用MelonLoader框架和UnityExplorer进行高级模组开发与调试,最终通过一个游戏对象透视(ESP)案例演示了功能扩展的实现。

weixin_29018335的博客 459

Java Socket编程

Socket传输模式 Sockets有两种主要的操作方式:面向连接的和无连接的.面向连接的sockets操作就像一部电话,他们必须建立一个连接和一人呼叫.所有的事情在到达时的顺序和他们出发时的顺序时相同.无连接的sockets操作就像是个邮件投递,,没有什么确保,多个邮件可能在到达时的顺序和出发时的顺序不相同. 到底用哪种模式是邮应用程式的需要决定的.如果可靠性更重要的话,用面向连接的操作会好一些

xuys2009的专栏 433

【faers数据库-R语言】

摘要:本文详细介绍了FAERS数据库不良反应信号挖掘的完整流程,包括数据解压导入(R代码示例)、数据结构理解、数据清洗(缺失值处理、标准化、合并和编码映射)、信号挖掘准备(药物-反应组合表创建)以及信号强度指标计算(PRR和ROR)。重点阐述了数据清洗的关键步骤,如缺失值处理(colSums(is.na()))、数据标准化(toupper()、as.Date())和表合并(merge()),并提供了完整的R语言实现代码。最后强调结果需结合临床知识解读,建议使用data.table等高效工具处理大数据。整个流

weixin_46587777的博客 1503

汇川EASY系列之以太网通讯(套接字socket做主站)

本文讲解汇川Easy系列使用以太网套接字socket通讯,本例中EasyPLC做主站。文中按步进行操作。细节明确。

这是一个长期关注工控行业技术的博客,实现0-1的突破,期待您的关注和留言 2192

socket传输图片用shutdownoutput()之后无法继续传输数据

socket传输图片用shutdownoutput()之后无法继续传输数据 新建立一个socket(用不同端口号)专门用来传输图片,传完关闭。

Lei Gong's blog 5890

双击文件夹弹窗“找不到应用程序”,但是右键点击打开可以

此电脑、回收站、c、d、f盘、控制面板、任意文件夹等都没有办法双击打开。 右键中包含“使用filemanager打开”,是由于FileManager卸载残留导致的。 懒人专用附件 下载解压上面附件,双击导入可以清理FileManager软件残留 参考: 双击此电脑出现找不到应用程序,但是右键点击可以-其他-优快云问答https://ask.youkuaiyun.com/questions/7631439 电脑上的文件夹双击都提示找不到应用程序,但是右击打开就能打开,该怎么解决? - 知乎 (z

webmasterqpwou的博客 1万+

Java网络编程:socket与Netty

Socket 实现了TCP/IP协议,可以连接到网络上的上脑,并收发数据ServerSocket 用于服务端,可以监听服务端口,等待客户端连接,连接后可以生成用于传输数据的Socket创建服务端 创建客户端 客户端发送消息 服务端接收消息 也可以使用Netty很方便的实现socket编程 Netty介绍 简介 按照官方定义,它是一个异步的、基于事件 Client/Server 的网络框架,目标是提供一种简单、快速构建网络应用的方式,同时保证高吞吐量、低延时、高可靠性。 Netty 的

闫玉林的博客 7521

微信聊天记录丢失原因与恢复方案详解

SQLite数据库作为移动应用常见的本地存储方案,其加密机制和存储结构直接影响数据安全性。以微信为例,聊天记录存储在EnMicroMsg.db等SQLite文件中,采用AES加密保护。当手机清理工具误删这些文件时,会导致特定时间段记录丢失。理解数据恢复原理需要掌握文件系统删除机制和闪存特性,其中关键点包括TRIM指令的影响和数据块覆盖风险。通过专业工具如DiskDigger或iMyFone D-Back,配合ADB调试和SQLite数据重组技术,可在黄金时间窗口内恢复记录。日常维护建议结合自动化备份方案和存

weixin_32612263的博客 386

高质量文献综述原来这么写!借助Gemini 3 Pro+四步法,手把手教你写出有逻辑深度的综述

总结与展望先总结现状,说明前人已经做到什么地步了,再指出缺口,前人没解决什么问题、方法有什么局限等等,最后再在这个缺口的基础上,提出你的未来研究方向。当你有个复杂的研究题目,但没办法拆解出关键词,就可以让Gemini 3 Pro来辅助帮你拆解,并帮你写专业的检索式,若是找英文文献,还能帮你将中文关键词翻译成地道的专业术语。做文献笔记,可以建立文献笔记矩阵,可以用Excel建个表格,横向是文献,纵向是关键要素,包括作者/年份、研究问题/假设、理论框架/模型、研究方法/数据来源、核心结论、局限性/Gap。

智能AI让学术科研更容易 992

Socket网络编程

提示:在学习网络编程之前我们先简单了解一下什么是计算机网络用一句话来说:计算机网络利用通信线路将所在不同位置的两台计算机连接起来,从而共享资源。

hubery_hubery的博客 1118

15、 深入理解Akka微服务:创建与管理体育博彩平台

本博文深入探讨了如何使用Akka微服务架构为体育博彩平台创建投影和管理事件数据,包括市场投影、投注投影以及数据库投影的实现。同时,介绍了通过gRPC提供HTTP端点以供外部系统访问的方法,并详细说明了在本地环境和Kubernetes中运行应用程序的步骤及配置建议。

weixin_35756624的博客 96

Java小白入门 —— 网络编程之Socket

Java小白入门 —— 网络编程之Socket 一. 什么是网络模型? 网络模型是一个设备发送数据给另一个设备,然后接收另一个设备的反馈,目前最主要的网络编程都是基于请求/响应方式的。 在网络编程中,发起请求的一方称作为客户端(Client),等待其他程序连接的一方成为服务端(Server)。客户端程序可以在需要时启动,而服务端程序需要一直保持响应状态。 在有些程序中,既可以作为客户端,也可以作为服务端。 二. IP及域名: IP地址: IP地址是用来唯一标识互联网上计算机的逻辑地址,让电脑之间可以相互通信

qq_43190579的博客 473

华为OD机试双机位C卷-AI面板识别(Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 AI面板识别,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解以及在线OJ模拟做题。华为OD机试 - AI面板识别。

qq_45776114的博客 1343

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

【Java】网络编程(Socket)

网络编程(Socket)

triticale的博客 1451

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

【JAVA】Java高级:Java网络编程——使用Socket编写网络应用

本教程从Socket的基本概念入手,逐步深入到Socket编程的实际应用,包括简单的服务器和客户端实现,以及多线程服务器的设计。通过这些示例,读者可以对Java Socket编程有一个全面的理解。

thinking_chou的专栏 1700

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

关于java网络编程socket的回顾

关于java网络编程这块,是每个入门的开发者在初学java的时候都会接触的一个知识点,在此之前的要求就是必须得弄明白java繁多的各种IO流,所以在java网络编程这一块设计到大量的流操作,原因很简单,因为网络编程所做的工作基本就是数据的交互,在数据的交互中就产生了大量的IO流的读写。 在此之前有必要过一下底层网络的一些基础知识,关于计算网络体系结构与常规协议一图概括: 目前对于常见的web开发...

youhaiguo的博客 378

Java 网络编程:Socket、HTTP 及 WebSocket 实践

Socket:低级通信方式,主要用于传输控制,适合持续的、实时的、点对点通信。HTTP:用于请求-响应模型的通信,适合无状态的 Web 请求。WebSocket:支持双向通信,用于构建实时的 Web 应用。下面我们将逐一讲解这三种方式的使用方法和实现代码。Socket:适合需要长连接和实时传输的场景。HTTP:适用于传统的 Web 请求和 RESTful API 接口。WebSocket:适合需要双向通信的实时应用。

一名热衷于技术的全栈开发者,专注于前端与后端的全面技术探索。在这里,我将分享我在技术领域的学习与成长,助力更多开发者的进步。 957

Java 基于TCP的Socket网络编程的入门及示例

前言:各位周末愉快,因匿名台风来袭,窗外又是一波风雨交加,所以又是哪都不想去……话说给我天晴还不是一样窝在家里。。。好了,这篇是总结了tcp的socket,各种例子,应该是比较全了,记在这里,用到时可以过来瞄一眼。 原文出处: Socket网络这块很重要的是指定ip地址,端口号等基本信息。这些信息被封装在InetAddress中,所以先上一个小Demo介绍InetAddress的几个基本方法。

让技术为我所用 2157

Java网络编程与Socket

1.背景介绍 Java网络编程与Socket是一门重要的技术领域,它涉及到计算机网络的基础知识和Java语言的底层实现。在现代互联网时代,网络编程已经成为了开发者的必备技能之一。本文将从多个角度深入探讨Java网络编程与Socket的核心概念、算法原理、代码实例等方面,为读者提供一个全面的学习指南。 1.1 网络编程的重要性 网络编程是指在计算机网络中实现程序之间的通信和数据交换。随着互联网...

AI天才研究院 1001

Java网络编程之Socket

一、什么是网络模型? 网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机。数据传递本身没有多大的难度,不就是把一个设备中的数据发送给两外一个设备,然后接受另外一个设备反馈的数据。 现在的网络编程基本上都是基于请求/响应方式的,也就是一个设备发送请求数据给另外一个,然后接收另一个设备的反馈。 在网络编程中,发起连接程序,也就是发送第一次请求的程序,被称作客户端(Clien...

唱歌古树的博客 682

Java网络编程:Socket基础

Java拥有强大的网络编程能力,JDK中对网络编程提供的API也大大地降低了开发者进行网络编程地难度。 计算机网络模型 在讲Java网络编程之前,我们需要复习一下计算机网络的一些基础知识。 网络模型一般是指OSI七层参考模型和TCP/IP五层参考模型。这两个模型在网络中应用最为广泛。 OSI参考模型是国际标准化组织(ISO)制定的一个用于计算机或通信系统间互联的标准体系,一般称为OSI参考模型或...

is_Javaer的博客 1027

socket网络编程 java_Java socket网络编程

Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术。网络基础首先看下网络的分层结构和一些基本协议:网络分层协议.jpg基于TCP/IP协议族的网络,被分为四层,分别为应用层,传输层,网际层以及网络接口层,每一层都设计了相应的协议,我们常用的一些协议(如...

weixin_39588679的博客 637

41_Java网络编程Socket入门

网络编程是Java开发中不可或缺的一项技能。无论是构建Web服务器、即时通讯工具,还是实现分布式系统中的节点通信,都离不开Socket编程。本文将从最基础的Socket概念讲起,逐步带你掌握Java中的TCP和UDP通信,通过可直接运行的代码示例,让你快速上手网络编程。为什么还要学Socket?在Spring Boot和Netty横行的今天,你可能会问:"直接用框架不好吗?“答案是:框架封装了底层细节,但不能替代你对底层原理的理解。

yuhou25的博客 188
上一篇: dubbo + springboot 初体验
下一篇: JPA懒加载引起的bug
贤gg
博客等级 码龄10年 0粉丝 10原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值