Java之Socket

javase之网络编程 网络编程 目标 了解网络常识 了解OSI参考模型 熟练操作TCP程序的开发 熟悉URL类的使用 一:网络常识 1. 什么是计算机网络 分布在不同地域的计算机, 通过硬件等网络设备使用通信线路互相连接形成的一个网格系统. 计算机网络, 可以很方便的进行 信息的传递, 资源的共享 ! 2. 什么是计算机的IP地址 : 192.168.1.1 IP地址 是计算机在互联网中的唯一标识 . 就像人在社会中的身份证号码. 本机IP: 127.0.0.1 localhost 3. .. 阅读详情

Java Socket

什么是Socket

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。

Java的java.net包

java socket 类分为:ServerSocket、Socket,即服务器端和客户端。这两个类都属于,java.net包中。

Socket类
  • 构造函数
Socket() 
Socket(InetAddress address, int port) throws UnknowHostException, IOException 
Socket(InetAddress address, int port, InetAddress localAddr, int localPort) throws IOException 
Socket(String host, int port) throws UnknowHostException, IOException 
Socket(String host, int port, InetAddress localAddr, int localPort) throws IOException

除了第一个不带参数的构造方法以外, 其他构造方法都会试图建立与服务器的连接, 如果连接成功, 就返回 Socket对象; 如果因为某些原因连接失败, 就会抛出IOException. InetAddress是一个用于记录主机的类,其静态getHostByName(String msg)可以返回一个实例,其静态方法getLocalHost()也可以获得当前主机的IP地址,并返回一个实例。Socket(String host, int port, InetAddress localAddress, int localPort)构造函数的参数分别为目标IP、目标端口、绑定本地IP、绑定本地端口。

  • 方法
getInetAddress();      远程服务端的IP地址
getPort();          远程服务端的端口
getLocalAddress()      本地客户端的IP地址
getLocalPort()        本地客户端的端口
getInputStream();     获得输入流
getOutStream();      获得输出流

值得注意的是,在这些方法里面,最重要的就是getInputStream()和getOutputStream()了

  • Socket状态

isClosed(); //连接是否已关闭,若关闭,返回true;否则返回false

isConnect();//如果曾经连接过,返回true;否则返回false

isBound(); //如果Socket已经与本地一个端口绑定,返回true;否则返回false

ServerSocket类
  • 构造函数
ServerSocket()throws IOException
ServerSocket(int port)throws IOException
ServerSocket(int port, int backlog)throws IOException
ServerSocket(int port, int backlog, InetAddress bindAddr)throws IOException
  1. port服务端要监听的端口;backlog客户端连接请求的队列长度;bindAddr服务端绑定IP
  2. 如果端口被占用或者没有权限使用某些端口会抛出BindException错误。譬如1~1023的端口需要管理员才拥有权限绑定。
  3. 如果设置端口为0,则系统会自动为其分配一个端口;
  4. bindAddr用于绑定服务器IP,为什么会有这样的设置呢,譬如有些机器有多个网卡。
  5. ServerSocket一旦绑定了监听端口,就无法更改。ServerSocket()可以实现在绑定端口前设置其他的参数。
Socket通信步骤
客户端
  • 创建ServerSocket和Socket
  • 打开连接到Socket的输入/输出流
  • 按照协议对Socket进行读/写操作
  • 关闭输入输出流、关闭Socket
服务器端
  • 创建ServerSocket对象,绑定监听端口
  • 通过accept()方法监听客户端请求
  • 连接建立后,通过输入流读取客户端发送的请求信息
  • 通过输出流向客户端发送乡音信息
  • 关闭相关资源
以下是一个客户端和服务端不断通信的例子
  • 服务端
public static void main(String[] args) {  
   try {
        	// 建立服务器连接  
            ServerSocket server = new ServerSocket(4578);  
            System.out.println("服务器启动");
            // 等待客户连接  
            Socket socket = server.accept();  
            try {  
                // 读取客户端传过来信息的DataInputStream  
                DataInputStream in = new DataInputStream(socket  
                        .getInputStream());  
                // 向客户端发送信息的DataOutputStream  
                DataOutputStream out = new DataOutputStream(socket  
                        .getOutputStream());  
                // 获取控制台输入的Scanner  
                Scanner scanner = new Scanner(System.in);  
                while (true) {  
                    // 读取来自客户端的信息  
                    String accpet = in.readUTF();  
                    System.out.println(accpet);  
                    String send = scanner.nextLine();  
                    System.out.println("服务器:" + send);  
                    // 把服务器端的输入发给客户端  
                    out.writeUTF("服务器:" + send);  
                }  
            } finally {// 建立连接失败的话不会执行socket.close();  
                socket.close();  
            }  
        } catch (IOException e) {  
            e.printStackTrace();  
        }  
    }
  • 客户端
public static void main(String[] args) {  
	        try {  
	            // 连接到服务器  
	            Socket socket = new Socket(InetAddress.getLocalHost(), 4578);  
	            
	            try {  
	                // 读取服务器端传过来信息的DataInputStream  
	                DataInputStream in = new DataInputStream(socket  
	                        .getInputStream());  
	                // 向服务器端发送信息的DataOutputStream  
	                DataOutputStream out = new DataOutputStream(socket  
	                        .getOutputStream());  
	  
	                // 装饰标准输入流,用于从控制台输入  
	                Scanner scanner = new Scanner(System.in);  
	                while (true) {  
	                	System.out.println("输入:");
	                    String send = scanner.nextLine();  
	                    System.out.println("客户端:" + send);  
	                    // 把从控制台得到的信息传送给服务器  
	                    out.writeUTF("客户端:" + send);  
	                    // 读取来自服务器的信息  
	                    String accpet = in.readUTF();  
	                    System.out.println(accpet);  
	                }  
	  
	            } finally {  
	                socket.close();  
	            }  
	        } catch (IOException e) {  
	            e.printStackTrace();  
	        }  
	    }
【Java TCP/IP Socket】Socket编程大合集 为了方便各位网友学习以及方便自己复习之用,将Java TCP/IP Socket编程系列内容按照学习顺序总结如下: 【Java TCP/IP Socket】Java TCP Socket程编程 【Java TCP/IP Socket】Java UDP Socket编程 【Java TCP/IP Socket】应用程序协议中消息的成帧与解析 【Java TCP/IP Socket】构建和解析自定义协议消息 【Java TCP/IP Socket】基于线程池的TCP服务器 【Java TCP/IP 阅读详情

相关推荐

C Socket与Java Socket之间的通信

问题描述:拟在服务器上利用c或c++来编写服务器端程序,在android手机上编写客户端程序,实现通过手机客户端来访问服务器上的资源。由于在c中socket的使用方式跟Java中有一些不同,c中的使用方式比较麻烦,java中相对简单。本文中服务器端的环境是linux。若是windows,C Socket的使用方式会稍有不同。 Socket介绍 Socket(套接字)相当于一种特殊的IO。只不过

lp09160206的专栏 4080

Java网络编程-Socket编程初涉一(简易客户端-服务器)

Java网络编程-Socket编程初涉一(简易客户端-服务器编写) 服务器 服务器的socket程序有以下几个任务: 创建ServerSocket。 绑定端口。 监听端口。 阻塞,等待客户端连接。 Java网络编程-Socket简介 服务器socket程序: package socket; import java.io.*; import java.net.ServerSocket; imp...

kaven 1965

【科研绘图】【数据拟合曲线】:附Origin详细画图流程

拟合曲线图

weixin_50236590的博客 4万+

Socket介绍及使用Java实现socket通信

使用Java实现socket通信。

weixin_49561506的博客 2万+

SAP IDOC与EDI实战解析:从基础原理到跨系统采购订单同步

本文深入解析了SAP IDOC与EDI在企业数据交换中的核心作用,通过跨系统采购订单同步的实战案例,详细阐述了从基础原理到配置部署的全过程。文章将IDOC比作标准化数据“集装箱”,EDI视为高效传输“高速公路”,并提供了从消息类型定义、处理代码开发到全链路测试的完整指南,帮助企业实现自动化、无差错的业务协同。

weixin_28335283的博客 295

Zotero插件安装保姆级教程:从Jasminum到Sci-Hub,一站式搞定文献管理

本文提供Zotero插件安装的保姆级教程,从Jasminum到Sci-Hub,一站式搞定文献管理。通过详细配置和实战案例,帮助用户高效构建文献工作流,提升研究效率。重点介绍了元数据抓取、PDF管理、文献分析和知识产出等关键插件的使用方法。

weixin_42531516的博客 172

Java网络编程Socket

Java网络编程Socket

u014644574的博客 6898

四类九种移位寄存器总结(循环(左、右、双向)移位寄存器、逻辑和算术移位寄存器、串并转换移位寄存器、线性反馈移位寄存器LFSR|verilog代码|Testbench|仿真结果)

移位寄存器有哪些分类呢? 按移位方向分类:①单向移位寄存器(包括左移、右移)②双向移位寄存器 按循环方式分类:①循环移位寄存器②非循环移位寄存器 按部位的不同分类:①逻辑移位寄存器②算术移位寄存器 按输入输出方式分类:①串入串出②串入并出③并入串出④并入并出

Loudrs的博客 1万+

Java中的Socket编程详解

Socket(套接字)是网络通信的端点,允许在两台计算机之间通过网络进行数据交换。Socket是网络编程中必不可少的一部分,它建立在TCP/IP协议上,用于管理连接、传输数据。客户端Socket:用于连接远程服务器。服务器Socket:用于侦听客户端请求并与其建立连接。Java中的Socket编程通过和Socket类可以轻松实现客户端与服务器之间的通信。在实际开发中,Socket编程通常用于构建底层网络协议的基础。通过本文的示例,你应该对Java中的Socket编程有了基本的了解。

上进!努力!!! 7536

如何在软件复位后保留指定RAM区域的数据

本文主要介绍S32K144的RAM retention功能

北极熊的脖子(16605192620@163.com) 1万+

Challenge 6 - OSCP C

开放了161端口,直接snmpbulkwalk扫描得到账号密码试了那几个web端口,发现可以登录8083的vesta,但是需要用户名大写Jack接着登录之后里面可以创建计划任务,直接弄个反弹shell,一分钟回弹。得到shell后,运行linpeas.sh提供了几个可能的漏洞,挨个试一下。

羽的博客 4156

JAVA—socket编程

socket编程,是在不同的进程间进行网络通讯的一种协议,在socket编程中基于TCP、UDP等协议做的一层封装,是一套系统所提供的的用于进行网络通信的编程接口。

皮皮治不痞痞 1万+

超级详细的GNS3最新版3-2.2.50安装配置教程,网工速度收藏!

你好,这里是网络技术联盟站,我是瑞哥。上周给大家分享了GNS3安装包。周末的时候有小伙伴在安装的时候遇到了一些问题,瑞哥周末特地从头安装了一下GNS3,今天给大家出个安装的教程,每一步的步骤我都截图了下来,希望对大家有所帮助!

网络技术联盟站 1109

Java中的Socket你了解吗

Java中的普通Socket和NioSocket的简单介绍和使用。

个人博客,欢迎收藏。 2108

第9章:Embedding、Pooling 与检索增强基础

本文介绍了律师事务所如何利用vLLM构建法律文档RAG系统,解决传统关键词检索在语义匹配上的不足。主要内容包括: 项目背景:传统Elasticsearch检索在法律术语上的低准确率问题,及多模型维护的复杂性; 技术方案:采用vLLM统一支持生成和向量化能力,通过语义向量检索提升相关性; 关键实现: 用vLLM的Embedding端点处理文档向量化 构建包含离线索引和在线检索的完整RAG流程 采用余弦相似度进行语义匹配 实践建议:切片大小选择、向量归一化处理、不同场景下的数据库选型等。

davidwang456的专栏 60

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java socket是什么_Java Socket

什么是SocketSocket的概念很简单,它是网络上运行的两个程序间双向通讯的一端,既可以接收请求,也可以发送请求,利用它可以较为方便地编写网络上数据的传递。所以简而言之,Socket就是进程通信的端点,Socket之间的连接过程可以分为几步:1、服务器监听服务器端Socket并不定位具体的客户端Socket,而是处于等待连接的状态,实时监控网络状态2、客户端请求客户端Socket发出连接请求,...

weixin_39916511的博客 601

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

java手写Socket

在Java中使用Socket进行网络编程是非常基础且重要的技能。Socket编程允许我们通过网络连接不同的计算机,实现数据的发送和接收。本文将通过一个完整的Java Socket编程示例,来详细讲解如何创建服务器端和客户端程序,以及如何通过它们进行通信。代码和解释将从基础的Socket概念逐步展开,最终形成一个完整的网络通信程序。

Flying_Fish_roe的博客 1201

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

java之socket_Java之Socket

简述Java中Socket分为普通Socket和NioSocket两种,这里介绍Socket。我们可以把Socket比作两个城市间的交通工具,有了它可以在两城之间来回穿梭,交通工具有很多种,每种交通工具也有相应的交通规则。Socket也一样,也有多种。大多情况下使用的是TCP/IP的流套接字,它是一种稳定的通信协议。(TCP/IP与UDP的对比)Java中的网络通信是通过Socket实现的,Soc...

weixin_30143813的博客 170

java socket 详解_JAVA SOCKET 详解

概述本人在开发学习NETTY的过程中,需要了解很多的网络开发知识,在此我总结一些关于socket的基础知识,大部分是网络总结,在此篇的随笔中记录socket的知识,以便于记录,如有问题欢迎大家斧正。SOCKET通信基本原理首先socket通常也叫做“套接字”,用于描述IP地址和端口,是一个通信连的句柄。应用程序通常通过“套接字”向网络发出请求或者应答网络请求。 socket通信是基于TCP/IP网...

weixin_39640372的博客 348

Java Socket编程

Socket(套接字)是网络通信的抽象端点,是支持TCP/IP协议的网络通信的基本操作单元。在Java中,Socket和ServerSocket类分别用于客户端和服务器端的网络通信。// 服务器端创建ServerSocket// 客户端创建Socket连接Socket基础:理解Socket的基本概念和通信机制是网络编程的基础多线程必要性:为支持并发连接,必须使用多线程处理Socket传统多线程的局限:线程创建销毁开销大、管理复杂、稳定性差线程池的优势:资源复用、提高响应速度、更好的可管理性。

Aayu_的博客 1195

java socket 实现原理_java socket原理

TCP / IP模型中有5层结构:应用层、传输层、网络层、数据链路层以及物理层。其中IP协议是位于网络层的,TCP协议是位于传输层的,通过IP协议可以使两台计算机使用同一种语言,从而允许Internet上连接不同类型的计算机和不同的操作系统的网络,IP协议只能保证计算机能够接收和发送分组数据,当计算机要和远程的计算机建立连接时,TCP协议会让它们建立连接:用于发送和接收数据的虚拟电路。在Java中...

weixin_34294809的博客 1539

java socket

socket server package com.abke.crm.sns.service; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket; /** * @author liouwb */ publi

liouwb 321

Java中的Socket的用法——Socket、NioSocket

还是圣诞节的例子,班长发现班委不止他一个,就通知了生活委员(女)和组织委员(男)来帮助他发贺卡和苹果,女生的贺卡是粉色的,男生的贺卡是蓝色的,生活委员负责从全班的贺卡中挑选女生的贺卡,而组织委员则负责男生的贺卡,然后生活委员和组织委员分别以宿舍为单位通知宿舍长来领取宿舍同学的贺卡和苹果,班长将圣诞节发苹果和贺卡的工作布置给两个班委后,就可以继续干其他工作了。如下代码,我们在服务器端创建ServerSocket,并调用accept方法监听Client的请求,收到请求后返回一个Socket。

qq_43842093的博客 797

Java语言的Socket编程

在网络编程中,Socket是一种非常重要的通信机制,它是支持TCP/IP协议的基本操作单元。Java语言作为一种面向对象的编程语言,提供了强大的Socket编程支持,使得开发网络应用程序变得更加简单和高效。本文将详细介绍Java中的Socket编程,包括Socket的工作原理、常用类及方法示例、Socket通信的实现步骤,以及在实际项目中的应用场景。

2501_91366151的博客 613

Java Socket

<br />第一步 充分理解Socket <br /><br />  1.什么是socket <br /><br />  所谓socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄。应用程序通常通过"套接字"向网络发出请求或者应答网络请求。 <br /><br />  Socket和ServerSocket类库位于java.net包中。ServerSocket用于服务器端,Socket是建立网络连接时使用的。在连接成功时,应用程序两端都会产生一个Socket实例,操作这个实例,完成所需

宏轩JAVA技术专栏 812

是时候了解Java Socket底层实现了

在Java中,提供了一系列Socket API,可以轻松建立两个主机得连接、读取数据,那底层到底怎么实现,很少人去关心。这其实最终还是通过调用操作系统提供得Socket接口完成(TCP/IP是由操作系统来实现)。 拿Windows举例,提供了socket、bind、listen、accept、connect、send、recv等函数,如果了解过Socket编程得伙伴应该一眼能看出这些函数是干什么得...

HouXinLin_优快云的博客 1349
上一篇: Java阻塞队列之BlockingQueue
下一篇: Java用socket与awt实现简单对话
Coder_py
博客等级 码龄10年 106粉丝 258原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值