Java中的TCP通信(网络编程 二)
简介
TCP(传输控制协议)是一种在计算机网络中常用的协议,它提供了可靠的、面向连接的通信(协议信息链接:TCP协议)。在Java中,我们可以使用Socket和ServerSocket类来实现TCP通信。
Java TCP通信关键方法
客户端套接字(Socket)方法:
- Socket(String host, int port):使用指定的主机和端口创建一个客户端套接字。
- Socket(InetAddress address,int port):创建流套接字并将其连接到指定IP指定端口号
- void connect(SocketAddress endpoint):连接到指定的远程套接字地址。
- void setSoTimeout(int timeout):设置套接字的读取超时时间。
- boolean isConnected():检查套接字是否已连接。
- void close():关闭套接字连接。
服务器套接字(ServerSocket)方法:
- ServerSocket(int port):创建一个服务器套接字,绑定到指定的端口。
- Socket accept():侦听客户端的连接请求,并返回与客户端连接的套接字。
- void setSoTimeout(int timeout):设置服务器套接字的超时时间。
- boolean isBound():检查服务器套接字是否已绑定到特定端口。
- void close():关闭服务器套接字。
输入输出流方法(数据处理):
- InputStream getInputStream():返回与套接字关联的输入流。
- OutputStream getOutputStream():返回与套接字关联的输出流。
- void write(byte[] b):将字节数组中的数据写入输出流。
- int read(byte[] b):从输入流中读取数据并存储到字节数组中。
- void flush():刷新输出流,确保数据被发送。
- String readLine():从输入流中读取一行数据。
- void writeBytes(String s):将字符串以字节的形式写入输出流。
- void writeInt(int value):将整数写入输出流。
- int readInt():从输入流中读取整数。
- void writeObject(Object obj):将对象写入输出流。
程序简单设计
客户端设计(后启动)
public class TCPClient {public static void main(String[] args) throws IOException {//创建嵌套字并连接服务端Socket socket=new Socket("127.0.0.1",10000);//获取嵌套字中的输出流,并发送数据OutputStream os = socket.getOutputStream();String message="hello tcp server";byte[] data=message.getBytes();//因为连接已经建立成功,直到往该连接(socket)的输出流里面写数据,服务端就能收到os.write(data,0,data.length);//获取嵌套字中的输入流,处理响应数据InputStream is = socket.getInputStream();byte[] buffer=new byte[1024];//堵塞当前进程,直到IO完成读取数据int length=is.read(buffer);String response=new String(buffer,0,length);System.out.println("服务端响应: "+response);//关闭连接socket.close();}
}
服务端设计(先启动)
public class TCPServer {public static void main(String[] args) throws IOException {//创建服务端嵌套字并监听指定端口ServerSocket serverSocket=new ServerSocket(10000);System.out.println("服务器已启动,等待客户端连接...");//监听客户端的链接(直接堵塞当前进程,知道完成与客户端的连接)Socket clientSocket = serverSocket.accept();//处理客户端请求System.out.println("客户端已连接");InputStream is = clientSocket.getInputStream();byte[] buffer=new byte[1024];int len=is.read(buffer);//读取缓存中的数据并返回数据长度String request=new String(buffer,0,len);System.out.println("客户端请求: "+request);//发送数据到客户端OutputStream os = clientSocket.getOutputStream();String message="Hello tcp Client";byte[] data = message.getBytes();os.write(data,0,data.length);//关闭连接clientSocket.close();serverSocket.close();}
}
相关文章:
Java中的TCP通信(网络编程 二)
简介 TCP(传输控制协议)是一种在计算机网络中常用的协议,它提供了可靠的、面向连接的通信(协议信息链接:TCP协议)。在Java中,我们可以使用Socket和ServerSocket类来实现TCP通信。 Java TCP通信…...
[架构之路-232]:目标系统 - 纵向分层 - 操作系统 - 数据存储:文件系统存储方法汇总
目录 前言: 一、文件系统存储方法基本原理和常见应用案例: 二、Windows FAT文件系统 2.1 概述 三、Linux EXT文件系统 3.1 基本原理 3.2 索引节点表(Inode Table) 3.2.1 索引节点表层次结构 3.2.2 间接索引表的大小和表项…...
【立体视觉(五)】之立体匹配与SGM算法
【立体视觉(五)】之立体匹配与SGM算法 一、立体匹配一)基本步骤二)局部立体匹配三)全局立体匹配四)评价标准1. 均方误差(RMS)2. 错误匹配率百分比(PBM) 二、半全局(SGM)立体匹配一)代价计算二&a…...
苹果系统_安装matplotlib__pygame,以pycharm导入模块
为了更便捷、连贯的进行python编程学习,尽量在开始安装python软件时,将编辑器、模块一并安装好,这样能避免以后版本冲突的问题。小白在开始安装pycharm、pip、matplotlib往往会遇到一些问题,文中列示其中部分bug,供大家…...
常用颜色的英文和十六进制
以下颜色都是按照下面格式所写 # size:文字大小(1~7);color:文字颜色 <font size5 colorred>红 red #ff0000</font>红 red #ff0000 橙 orange #ffa500 黄 yellow #ffff00 草绿 springgreen #00FF7F 绿…...
计算机网络第二章思考题
1. 调制与编码分别有何作用? 调制(Modulation)和编码(Coding)是通信系统中的两个关键概念,它们分别具有不同的作用和功能: 调制(Modulation): 作用ÿ…...
Xcode、终端、Mason、nvim.debug环境路径
Xcode: /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include 终端: /Library/Developer/CommandLineTools/usr/include Mason: /Users/donny/.local/share/nvim/mason/packages/clangd/…...
2023华为OD机试真题-2023(A+B卷)【Java、C++、Go、Python】
【华为OD机试真题-2023(A+B卷)【Java、C++、Go、Python】 该专栏博客已帮助千余名同学通过OD机考 2023年5月,华为OD机考更新为OD统一考试(B卷)。B卷的题目包括两部分: 1.2022年老题库 2.2023新增题目 OD统一考试B卷的题目博主也会及时搜集更新! 以下为OD统一考试(B卷…...
[NISACTF 2022]join-us - 报错注入无列名注入
点击登录,找到注入点 这种框,可以直接爆破关键字,看是否拦截,也可以手动尝试,发现、union、and、or、substr、database等关键字都拦截了 1、学到了:可以用数据库中不存在的表名或者不存在的自定义函数名爆…...
Raid10--Raid01介绍
RAID10 先对磁盘做mirror,然后对整个mirror组做条带化; 比如8块盘 需要分成4个基组,每个基组2块盘; 每个基组先做raid1,再做raid0,4条条带化; 所以: …...
集群服务器
文章目录 项目名:实现集群服务器技术栈通过这项目你学到(或者复习到)实现功能编码环境json环境muduo库boost库MySql数据库登录mysql:查看mysql服务开启了没有?mysql的服务器及开发包库chat,表 allgroup friend groupuser offlinemessage user…...
大数据Doris(五):开始编译 Doris
文章目录 开始编译 Doris 一、下载Doris的安装包 二、解压缩 三、上传配置文件...
Linux软硬链接和动静态库
本文已收录至《Linux知识与编程》专栏! 作者:ARMCSKGT 演示环境:CentOS 7 软硬链接和动静态库 前言正文软硬链接原理使用 文件时间动静态库库介绍静态库静态库制作静态库的使用关于静态链接 动态库动态库制作动态库的使用关于动态链接 补充 最…...
Linux shell编程学习笔记6:查看和设置变量的常用命令
上节我们介绍了变量的变量命名规则、变量类型、使用变量时要注意的事项,今天我们学习一下查看和设置变量的一些常用命令,包括变量的提升,有些命令在之前的实例中已经使用过了。 一、 echo :查看变量的值 语法格式:ech…...
leetcode 416.分割等和子集
416. 分割等和子集 给你一个 只包含正整数 的 非空 数组 nums 。请你判断是否可以将这个数组分割成两个子集,使得两个子集的元素和相等。 示例 1: 输入:nums [1,5,11,5] 输出:true 解释:数组可以分割成 [1, 5, 5] 和…...
Java基于SSM+Vue的平时成绩管理系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用Vue技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
flutter开发实战-webview插件flutter_inappwebview使用
flutter开发实战-webview插件flutter_inappwebview使用 在开发过程中,经常遇到需要使用WebView,Webview需要调用原生的插件来实现。常见的flutter的webview插件是webview_flutter,flutter_inappwebview。之前整理了一下webview_flutter&…...
Selenium 浏览器坐标转桌面坐标
背景: 做图表自动化项目需要做拖拽操作,但是selenium提供的拖拽API无效,因此借用pyautogui实现拖拽,但是pyautogui的拖拽是基于Windows桌面坐标实现的,另外浏览器中的坐标与windows桌面坐标并不是一比一对应的关系&am…...
1.6.C++项目:仿muduo库实现并发服务器之channel模块的设计
项目完整版在: 文章目录 一、channel模块:事件管理Channel类实现二、提供的功能三、实现思想(一)功能(二)意义(三)功能设计 四、代码(一)框架(二…...
Redis代替session 实现登录流程
Redis代替session 实现登录流程 如果使用String,他的value,用多占用一点空间,如果使用哈希,则他的value中只会存储他数据本身,如果不是特别在意内存,其实使用String就可以 设计key的具体细节 在设计这个k…...
Gemini Pro v1.5 vs v1.0 API性能对比实测(延迟↓42%,成本↑还是↓?这份报告仅限本周开放)
更多请点击: https://intelliparadigm.com 第一章:Gemini Pro高级功能解锁指南 Gemini Pro 作为 Google 推出的高性能多模态大模型,其高级功能需通过 API 配置与结构化提示工程协同激活。以下为关键能力启用路径及实践要点。 启用多轮上下文…...
如何用novel-downloader高效保存网络小说:终极指南与实用技巧
如何用novel-downloader高效保存网络小说:终极指南与实用技巧 【免费下载链接】novel-downloader 一个可扩展的通用型小说下载器。 项目地址: https://gitcode.com/gh_mirrors/no/novel-downloader 你是否曾因喜爱的小说突然消失而感到沮丧?是否因…...
完全指南:Linux系统下Realtek RTL8821CE无线网卡驱动深度解析与实战配置
完全指南:Linux系统下Realtek RTL8821CE无线网卡驱动深度解析与实战配置 【免费下载链接】rtl8821ce 项目地址: https://gitcode.com/gh_mirrors/rt/rtl8821ce 在Linux系统中,Realtek RTL8821CE无线网卡驱动的正确配置对于802.11ac标准的Wi-Fi蓝…...
用STM32F103和DHT11做个智能温湿度报警器,附ESP8266远程监控代码
STM32F103与DHT11打造智能环境监测系统:从本地报警到云端监控全解析 在智能家居和工业物联网快速发展的今天,环境监测系统已成为许多创客和开发者入门的首选项目。本文将带你用STM32F103微控制器和DHT11温湿度传感器,构建一个功能完善的智能…...
C语言中的strchr函数
strchr是string.h库中的函数,它的形式为: char * strchr (char * str, int character );功能: 返回一个指针,指向字符在 C 字符串 str 中第一次出现的位置。C 字符串末尾的空字符 \0 被视为字符串的一部分。因此,你也可…...
Swiz状态管理库:原子化与派生状态在前端开发中的实践
1. 项目概述:一个为现代前端应用量身定制的状态管理库如果你和我一样,在React、Vue或者Svelte这类现代前端框架里摸爬滚打过几年,那你一定对状态管理这个“老大难”问题深有体会。从早期的Flux架构,到Redux的一统江湖,…...
亚马逊会再推智能手机吗?负责人回应含糊,Transformer 项目充满悬念
亚马逊智能手机计划:是与否的模糊回应亚马逊设备与服务部门负责人帕诺斯帕奈在面对是否推出智能手机的问题时,给出了模棱两可的回答。他表示这并非公司目标,但又不直接否认可能性。此前有报道称亚马逊正在开发代号为“Transformer”、搭载 Al…...
pkrelay:轻量级端口转发工具的设计原理与生产实践
1. 项目概述:一个轻量级、高可用的端口转发与流量中继工具在分布式系统、微服务架构以及混合云部署的日常运维和开发调试中,我们经常会遇到一个经典问题:如何安全、便捷地将一个网络环境中的服务端口,暴露给另一个网络环境访问&am…...
questasim下载安装
questasim下载安装 https://zhuanlan.zhihu.com/p/682726018...
【Linux】初见,进程概念
1.冯诺依曼体系结构我们所见的大部分计算机都是遵循的冯诺依曼体系结构我们的计算机都是由一个个硬件所组成的输出设备:显示器、音响、摄像头、网卡.......输入设备:鼠标、键盘 、网卡.......中央处理器(CPU):包含运算…...
