java TCP服务器与客户端通信示例

目录

背景:

TCP服务代码解析:

TCP服务器的代码:

服务器程序的工作流程:

TCP客户端代码解析 :

TCP客户端代码:

客户端工作流程:

总结:


背景:

如何使用Java编程语言实现一个简单的TCP服务器和客户端。那么TCP是什么?TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。下面将编写两个简单的Java程序来展示TCP通信的基本原理。

TCP服务代码解析:

TCP服务器的代码:

import java.net.*;    
import java.io.*;    
  
public class TCPServer {    
  public static void main(String[] args) throws Exception {    
    // 创建一个ServerSocket对象,监听6666端口  
    ServerSocket ss = new ServerSocket(6666);   
      
    // 无限循环,等待客户端连接  
    while (true) {    
      // 当有客户端连接时,accept()方法返回一个新的Socket对象  
      Socket s = ss.accept();    
        
      // 从Socket中获取输入流,并使用DataInputStream进行封装  
      DataInputStream dis = new DataInputStream(s.getInputStream());    
        
      // 从输入流中读取UTF字符串并打印  
      String message = dis.readUTF();   
      System.out.println("Received from client: " + message);   
        
      // 关闭流和Socket连接  
      dis.close();    
      s.close();    
    }    
  }    
}

服务器程序的工作流程:

1.创建一个ServerSoket对象,监听指定的端口(这里6666) 

2.进入无限循环,等待客户端的连接

3.当有客户端时,accept()方法会返回一个新的Socket独享

4.从这个Socket对象中获取输入流,并使用DataInputStream进行封装

5.读取输入流中的UTF字符串,并打印到控制台

6.关闭输入流和Socket连接

TCP客户端代码解析 :

TCP客户端代码:

import java.net.*;    
import java.io.*;    
  
public class TCPClient {    
  public static void main(String[] args) throws Exception {    
    // 创建一个Socket对象,连接到服务器的指定IP和端口  
    Socket s = new Socket("127.0.0.1", 6666);    
      
    // 从Socket中获取输出流,并使用DataOutputStream进行封装  
    OutputStream os = s.getOutputStream();    
    DataOutputStream dos = new DataOutputStream(os);   
      
    // 向输出流中写入UTF字符串  
    dos.writeUTF("hello server!");    
      
    // 刷新输出流,确保数据被发送  
    dos.flush();    
      
    // 关闭输出流和Socket连接  
    dos.close();    
    s.close();    
  }    
}

客户端工作流程:

1.创建一个Socket对象,连接到服务器的指定IP和端口(这里是127.0.0.1和666)

2.从这个Socket对象中获取输出流,并使用DataOuptStream进行封装

3.向输出流中写入UTF字符串

3.刷新输出流,确保数据被发送到服务器

5.关闭输出流和Socket连接 

总结:

类别TCP服务器TCP客户端
功能监听指定端口,等待客户端连接,处理客户端发送的数据连接到服务器,发送数据到服务器
主要类ServerSocketSocket
创建方式ServerSocket ss = new ServerSocket(port);Socket s = new Socket(host, port);
监听端口通过ServerSocket构造函数指定无需监听,连接到服务器的指定端口
数据接收使用ServerSocketaccept()方法等待客户端连接,然后获取Socket对象的InputStream进行读取使用Socket对象的getOutputStream()获取输出流,然后写入数据
数据发送无需直接发送数据,而是从客户端接收数据使用Socket对象的getOutputStream()获取输出流,并使用DataOutputStream或其他包装类写入数据
数据读取使用Socket对象的getInputStream()获取输入流,并使用DataInputStream或其他包装类读取数据无需直接读取数据,而是将数据发送到服务器
关闭连接关闭Socket对象的输入流和Socket本身关闭Socket对象的输出流和Socket本身
注意事项

1.需要处理并发连接(例如使用多线程)

2.需要处理可能的异常和错误

3.可能需要设置超时和缓冲区大小

1.需要确保服务器正在运行并监听指定端口

2.需要处理可能的异常和错误

3.可能需要设置超时和缓冲区大小

通过上面的示例,Java中TCP服务器和客户端的基本实现。服务监听一个端口,等待客户端的连接,当客户端连接后,双方可以通过Socket 对象进行数据的读写,这里使用DataInputStream和DataOutputeam来封装输入流和输出流,以便更好的读取和写入UTF字符串,

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

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

相关文章

Centos7虚拟机

Centos 7 安装 1 镜像下载1.1 官网下载1.2 阿里云镜像下载 2 环境的安装2.1 打开我们的虚拟机,点击文件进行新建2.2 选择典型之后,下一步2.3 选择稍会安装操作系统2.4 勾选Linux,并且选择CentOS 7的版本2.5 设定我们虚拟机的名称和安装位置2.…

python实现可视化大屏(django+pyechars)

1.实现效果图 2.对数据库进行迁移 python manage.py makemigrations python manage.py migrate 3.登录页面 {% load static%} <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport"…

文件管理器加载缓慢-禁用文件类型自动发现功能

文件管理器加载缓慢-禁用文件类型自动发现功能 右键“Shell”项&#xff0c;选择新建“字符串值” “FolderType”&#xff0c;数值为 NotSpecified。

文字实录|Checkout.com大中华区总经理项尧:品牌全球化发展中的支付运营策略

大家好&#xff0c;很高兴在此次【品牌全球化营销增长峰会】与大家一起分享和交流。 我叫项尧&#xff0c;是 Checkout.com 大中华区的总经理&#xff0c;在支付领域有将近15年的经验。 我们 Checkout.com 是一家总部位于英国的支付公司&#xff0c;专注于线上收单&#xff0…

旧衣回收小程序开发:回收市场的新机遇

当下&#xff0c;旧衣服回收已经成为了一种流行趋势&#xff0c;居民都将闲置的衣物进行回收&#xff0c;旧衣回收市场规模在不断增加。随着市场规模的扩大&#xff0c;为了让居民更加便利地进行回收&#xff0c;线上回收小程序也应运而生&#xff0c;为大众打造了一个线上回收…

程序员学长 | 快速学会一个算法,RNN

本文来源公众号“程序员学长”&#xff0c;仅用于学术分享&#xff0c;侵权删&#xff0c;干货满满。 原文链接&#xff1a;快速学会一个算法&#xff0c;RNN 今天给大家分享一个超强的算法模型&#xff0c;RNN 循环神经网络&#xff08;Recurrent Neural Network, RNN&…

新改进!LSTM与注意力机制结合,性能一整个拿捏住

众所周知&#xff0c;LSTM并不能很好地处理长序列和重要信息的突出&#xff0c;这导致在某些情况下性能不佳。而注意力机制模拟人类视觉注意力机制的特点可以很好地解决这个问题。 说具体点就是&#xff0c;注意力机制通过权重分布来决定应该关注输入序列中的哪些部分&#xf…

完整代码Python爬取豆瓣电影详情数据

完整代码Python爬取豆瓣电影详情数据 引言 在数据科学和网络爬虫的世界里&#xff0c;豆瓣电影是一个丰富的数据源。在本文中&#xff0c;我们将探讨如何使用Python语言&#xff0c;结合requests和pyquery库来爬取豆瓣电影的详情页面数据。我们将通过一个具体的电影详情页面作…

3d渲染软件有哪些(2),渲染100邀请码1a12

3D渲染软件有很多&#xff0c;上次我们介绍了几个&#xff0c;这次我们接着介绍。 1、Arnold Arnold渲染器是一款基于物理算法的电影级渲染引擎&#xff0c;它具有渲染质量高、材质系统丰富、渲染速度快等特点&#xff0c;是3D设计师的极佳选择。2、Octane Render Octane Ren…

云3D渲染:深度剖析技术原理、优势及其在各行业的广泛应用

云3D渲染技术&#xff0c;在数字化转型的大潮中&#xff0c;以其显著的优势和广阔的应用潜力&#xff0c;正在深刻地重塑多个行业的未来。它不仅为电影特效、建筑设计、游戏开发和虚拟现实等领域注入了前所未有的视觉震撼&#xff0c;还促进了创意思维与前沿技术的紧密结合&…

【编译原理】总览

1 字母表 字母表&#xff1a; 用∑表示&#xff0c;它是一个有穷符号集合 符号&#xff1a;字母、数字、标点符号... 例如&#xff1a;二进制字母表为{0&#xff0c;1}&#xff0c;ASCII字符集 2 字母表的运算 字母表上的乘积&#xff1a; ∑1∑2{ab | a属于∑1&#xff0c;b…

气流流型烟雾模型研究相关法规要求及拍摄注意事项

气流模式可视化提供制药设施中实际气流模型的视觉记录。它是目前最广泛接受的、证明关键工艺区域的气流模型满足监管期望的方法。此外&#xff0c;气流模型可视化允许多个职能组织发现气流设计和功能的有效性和意义&#xff0c;特别是在关键领域。 与气流模型相关的法规指南要求…

数据处理神器Elasticsearch_Pipeline:原理、配置与实战指南

文章目录 &#x1f4d1;引言一、Elasticsearch Pipeline的原理二、Elasticsearch Pipeline的使用2.1 创建 Pipeline2.2 使用 Pipeline 进行索引2.3 常用的 Processor 三、实际应用场景3.1 日志数据处理3.2 数据清洗和标准化3.3 数据增强 四、最佳实践4.1 性能优化4.2 错误处理4…

晶方科技:台积电吃饱,封装迎春?

半导体产业链掀起涨价潮&#xff0c;先进封装迎接利好。 这里我们来聊国内先进封装企业——晶方科技。 近期&#xff0c;由于产能供不应求&#xff0c;台积电决定上调先进封装产品价格&#xff0c;还表示订单已经排到2026年。 大哥吃不下了&#xff0c;剩下的订单全都是空间。…

GMSB文章四:微生物组多样性分析

欢迎大家关注全网生信学习者系列&#xff1a; WX公zhong号&#xff1a;生信学习者Xiao hong书&#xff1a;生信学习者知hu&#xff1a;生信学习者CDSN&#xff1a;生信学习者2 介绍 Alpha多样性主要关注的是样品内部的多样性&#xff0c;即一个特定区域或生态系统内的物种丰…

加油卡APP系统开发,优惠加油!

在当下的社会生活中&#xff0c;汽车已经成为了家家户户必备的出行工具&#xff0c;骑车加油也成为了居民生活中不可或缺的事情。为了让大众更加优惠加油&#xff0c;在线加油卡系统成为了一个重要的加油渠道&#xff01; 在线加油卡系统是一个移动应用程序&#xff0c;用户可…

记一次elementui时间线的实现

实现效果 点击展开&#xff0c;每次累加五条数据进行展示 实现思路 起始本质上就是一个分页查询&#xff0c;只不过按新的形式展示&#xff0c;然后也不统计总数&#xff0c;每次只展示固定的5条数据点击加载更多&#xff0c;就展示下一页&#xff0c;页的页数进行1&#xff…

回购注销高管减持,东软集团的“大手笔”有意义吗?

文&#xff1a;互联网江湖 作者&#xff1a;刘致呈 作为老牌软件巨头&#xff0c;东软集团这两年的业绩着实有些不够看。 看财报数据&#xff0c;22年东软集团营收94.66亿&#xff0c;净亏损3.47亿&#xff0c;扣非净利利润-5.30亿。23年&#xff0c;集团营收105.44亿&#x…

玩个游戏 找以下2个wordpress外贸主题的不同 你几找到几处

Aitken艾特肯wordpress外贸主题 适合中国产品出海的蓝色风格wordpress外贸主题&#xff0c;产品多图展示、可自定义显示产品详细参数。 https://www.jianzhanpress.com/?p7060 Ultra奥创工业装备公司wordpress主题 蓝色风格wordpress主题&#xff0c;适合装备制造、工业设备…

使用Spring Boot构建RESTful API:从理论到实践

文章目录 引言第一章 RESTful API基础知识1.1 什么是RESTful API1.2 RESTful API的优势 第二章 Spring Boot基础知识2.1 什么是Spring Boot2.2 Spring Boot的主要特性 第三章 使用Spring Boot构建RESTful API3.1 项目初始化3.2 构建基础结构3.3 定义实体类3.4 创建Repository接…