TCP通信程序

Java 实现 TCP 多发多收通信程序 本文解析了Java实现的TCP多发多收通信程序,包含客户端和服务端的完整代码。客户端通过循环结构持续发送控制台输入的消息,服务端实时接收并显示;双方通过"exit"指令或异常处理实现安全退出。该程序基于TCP协议的可靠传输特性,实现了持续通信的核心功能,适用于在线聊天、远程监控等场景。文章详细介绍了代码实现原理、运行流程和技术特点,并提出了双向通信、多线程支持等扩展方向,为开发者构建TCP实时交互系统提供了基础参考。 阅读详情

TCP通信原理

1、TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信的两端形成网络虚拟链路
2、一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信

3、Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信
4、Java为客户端提供了Socket类。为服务器端提供了ServerSocket类

下面是我做的练习

在Client程序输入,在Service程序那接收并输出到控制台,当输出886时结束程序

Client类

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

public class Client {
    public static void main(String[] args) throws IOException {
        Socket s=new Socket("192.168.1.1",1116);

//        虽然我比较习惯用Scanner但这次用标准输入流的方法来做键盘输入,为了能一行一行读封装成一个字符输入缓冲流
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
//        为了跟上面的相对应,把输出流也封装成字符输出缓冲流
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));

        String line;
        while ((line=br.readLine())!=null){
//            上面把读入的一行赋值给line,当line是886时,先继续写,然后跳出循环
            if(line.equals("886")){
                bw.write(line);
                bw.newLine();
                bw.flush();
                break;
//                如果不是886,只需要写入数据就可以了
            }else{
                bw.write(line);
                bw.newLine();
                bw.flush();
            }
        }

        s.close();
    }
}

Service类

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;

public class Server {
    public static void main(String[] args) throws IOException {
//        创建ServerSocket
        ServerSocket ss=new ServerSocket(1116);
//        ServerSocket对象没有getInputStream()方法,只能通过这个方法创建Socket对象再调用getInputStream方法
        Socket s=ss.accept();

//        把输出流也包装成字符输出缓冲流
        BufferedReader br=new BufferedReader(new InputStreamReader(s.getInputStream()));
        String line;
        while((line=br.readLine())!=null){
//            如果接收的是886,输出到控制台再跳出循环
            if(line.equals("886")){
                System.out.println("接收的消息是:"+line);
                break;
//                否则只需要把接收的数据输出到控制台
            }else{
                System.out.println("接收的消息是:"+line);
            }
        }
        ss.close();
    }
}

结果

 

 

TCP通信程序代码实现 文章目录TCP通信程序概述 TCP通信程序 概述 面向连接的通信,客户端和服务器端必须经过三次握手,建立逻辑连接,才能通信 通信的步骤 服务器端先启动 服务器端不会主动请求客户端 必须使用客户端请求服务器端 客户端和服务器端就会建立一个逻辑连接 而这个连接中包含一个对象,这个对象就是IO对象 客户端和服务器端就可以使用IO进行通信 通信的数据不仅仅是字符 所以IO对象是字节流对象 客户端和服务器端进行一个数据交互,需要四个IO流对象(2对InputStream OutputStream) 在java中,提供 阅读详情

相关推荐

简单实现Python TCP代理服务器

它接收客户端的请求,并将请求转发给目标服务器,然后将目标服务器的响应返回给客户端。代理服务器将在指定的地址和端口上进行监听,并将客户端的请求转发给目标服务器。我们还需要指定代理服务器的监听地址和端口,以及目标服务器的地址和端口。一旦有客户端连接进来,我们就接受连接,并创建一个与目标服务器的套接字。在上面的代码中,我们首先创建了一个代理服务器的套接字,并绑定到指定的地址和端口上。在主函数中,我们创建代理服务器的套接字,并开始监听指定的地址和端口。函数来进行数据转发。最后,我们关闭客户端和目标服务器的套接字。

TechPr的博客 400

基于代理服务程序的TCP通信

为实现简单网络通讯软件的基本功能,本实验需要可在实验二的实现方法基础上进行扩展设计,添加异常捕捉和GUI界面设计,并设置代理服务端,来隔绝潜在的风险。2、 利用Socket()、bind()、listen()、accept()、recv()send()等函数完成套接字创建,并进行数据通信。1、 编写一个代理程序,设置服务器只允许代理程序所在计算机的IP地址访问,所有客户端对服务器的访问都由代理程序负责转发。2、 在完成上述要求的基础上,自行构造GUI界面,界面布局参考图1,图2。

todcode的博客 470

MFC实现TCP通信程序实战教程

CAsyncSocket类是MFC提供的一个用于实现异步网络通信的类。其工作方式基于事件驱动模型,允许网络操作在后台运行,不阻塞用户界面线程。构造函数用于初始化一个CAsyncSocket对象,而析构函数则用于释放与该对象相关的所有资源。CAsyncSocket类的构造函数没有参数,它会分配必要的资源以供后续使用。例如:析构函数自动调用Close函数来断开套接字连接并释放资源。当对象超出作用域时,它将自动被销毁,释放资源:在本章中,我们探讨了多客户端连接管理与并发处理的多个方面。

weixin_35982453的博客 1103

java socket编程 (2)(转载)

4,简单的Client/Server程序 1. 客户端程序 import java.io.*;   import java.net.*;   public class TalkClient {     public static void main(String args[]) {       try{         Socket socket=new Sock

480

MPU6050 vs BMX055 vs ICM20602:如何为你的项目选择最佳陀螺仪(附实测数据对比)

本文深度对比了MPU6050、BMX055和ICM20602三款主流六轴IMU传感器的核心性能。通过实测数据,分析了它们在精度、噪声、温漂、接口速度及资源占用上的差异,并提供了从项目需求出发的选型指南,帮助开发者根据预算、精度要求和处理器性能选择最合适的陀螺仪与加速度计组合。

h0i1j2k3l的博客 972

复现基于混频因子模型的GDP即时预测方法

基于混频因子模型的GDP即时预测方法复现 本文复现了混频因子模型(MIDAS)在GDP即时预测中的应用。该方法整合7个月度宏观经济变量(工业增加值、CPI、PMI等)与季度GDP数据,通过状态空间模型实现高频预测。技术实现包括:1)使用PCA提取潜在共同因子;2)构建状态空间模型处理混频数据;3)通过卡尔曼滤波进行参数估计。实证结果显示模型预测效果良好(测试集R²=0.82),其中工业增加值对因子1贡献最大(0.82),CPI对因子2贡献显著(0.78)。该方法为决策者提供了更及时的季度GDP估算。

huanghm88的专栏 601

TCP 通信流程

本文主要对TCP通信的流程进行了讲解,对其中的函数参数及返回值进行说明,同时设定一个简单的打电话模拟场景去帮助我们了解通信的流程。

bx1091182836的博客 5552

SCI论文发表很容易【5】:比较容易中的期刊

整理了一些经管方面比较容易中稿的期刊,可供大家参考

qq_25018077的博客 1678

java中tcp_Java中的TCP通信程序

Java中的TCP通信程序TCP可以实现两台计算机之间的数据交互通信的两端,要严格区分客户端与服务端两端通信时的步骤:1.服务端程序,需要事先启动,等待客户端连接2.客户端主动连接服务器端,才能成功通信,服务器端不可以主动链接客户端在java中两个类用于实现TCP通信程序:客户端: java.net.Socket 类表示。创建 Socket 对象,向服务端发出连接请求,服务端响应请求,两者建 立连...

weixin_36035900的博客 411

Labview项目01:标准可配置序列测试框架

摘要:本文介绍了一个基于LabVIEW2020开发的通用测试框架系统。该系统采用模块化设计,包含主界面、调试界面、设置界面和登录界面。主功能包括:1)可配置测试序列,支持延时、预定值输出、随机值输出等操作;2)单步测试功能自主添加;3)界面支持测试序列编辑和权限管理。系统采用队列机制处理事件和测试流程,通过CSV文件存储测试序列,支持参数化配置。用户可自定义测试VI(A_.vi和N_.vi格式),并通过调试界面验证测试序列。最终测试结果在主界面显示,提供整体判断功能。该系统既可作为学习参考,也可用于实际测试

weixin_38637405的博客 1552

【ComfyUI专栏】安装Triton组件

Triton是一款支持大模型推理的深度学习加速组件,最初仅支持Linux平台,现已通过开源社区适配Windows系统。针对SageAttention的安装,建议使用3.2.0Post10版本(该版本提供封装好的安装包,更高版本仅有源码)。用户可通过GitHub获取安装资源,或直接使用pip命令"pip install triton-windows"进行安装。安装时需注意:1)在虚拟环境中操作;2)使用管理员权限。相关资源链接已在文中提供。

技术与管理的平衡木- 1863

java编写TCP方式的通信程序

Java API中封装了大量的函数,供编写网络通信程序时使用.这使得java在网络方面具有强大的功能.用java编写TCP方式的通信程序比较简单,但也有一些问题需要注意.以下为监听主程序,监听程序在发现客户端连接后,启动一个会话socket线程,以实现实时发送,接收信息和多客户端同时工作.import java.io.*;import java.lang.*;import java.net.Ser

buptwaitme2002的专栏 1466

【国产MCU】-CH32V307-通用定时器(GPTM)-输入捕获模式测量脉冲

CH32V307的通用定时器模块包含一个16 位可自动重装的定时器(TIM2、TIM3、TIM4和TIM5),用于测量脉冲宽度或者产生特定频率的脉冲、PWM波等。可用于自动化控制、电源等领域。 输入捕获是通用定时器功能之一,一般用于测量频率和测量脉冲宽度。本文将详细介绍如何通用定时器的输入捕获功能。

视觉与物联智能 2814

JAVA进阶-TCP通信程序,日志概述

问题:TCP客户端发送数据的对象叫什么?Java中的TCP通信Java对基于TCP协议的的网络提供了良好的封装,使用Socket对象来代表两端的通信端口,并通过Socket产生IO流来进行网络通信。Java为客户端提供了Socket类,为服务器端提供了ServerSocket类构造方法方法名说明创建流套接字并将其连接到指定IP指定端口号创建流套接字并将其连接到指定主机上的指定端口号相关方法方法名说明返回此套接字的输入流返回此套接字的输出流示例代码。

qinqin__的博客 866

基于STM32L4XX、HAL库的 ATGM336H GPS定位模块驱动程序设计

/ 转换为km/h。// 定位状态: 0=无效, 1=GPS定位, 2=差分定位。// GPS解析数据。支持GPS/BeiDou/GLONASS/Galileo/QZSS多系统联合定位。// 回调函数(需要在HAL_UART_RxCpltCallback中调用)// 地面速度(km/h)// 海拔高度(m)

zhusl6688的博客 794

Swin Transformer注意力计算复杂度为何比全局注意力少那么多?

本文对比分析了Vision Transformer(ViT)和Swin Transformer的计算复杂度。ViT采用全局注意力机制,计算复杂度为4[hwc^2]+2[(hw)^2C],当图像尺寸较大时计算量显著增加。而Swin Transformer采用窗口注意力机制,将图像划分为M×M的窗口(如7×7),计算复杂度降为4[hwc^2]+2[(hw)(M*M)*C]。以224×224图像为例,Swin Transformer的计算量比ViT减少约900倍,大幅节省了计算资源。文章通过矩阵乘法运算详细推导了

人工智能研究所的博客 62

【网络通信】深入了解TCP与UDP通信及其程序设计的奥秘

本文主要讲解了TCP程序设计中相关的ServerSocket类和Socket类,并通过两个案例实现了简单的TCP通信和多线程的TCP通信;最后介绍了UDP程序设计相关的DatagramPacket类和DatagramSocket类,并通过两个的案例实现了简单的UDP通信和多线程的UDP通信。通过对本文的学习,希望大家能够对网络编程的底层原理有一个简单的了解,为以后的网络编程开发打下基础。

2301_80760873的博客 1725

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

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

网络编程---网络编程入门、UDP通信程序、TCP通信程序

在网络通信协议下,实现网络互连的不同计算机上运行的程序间可以进行数据传输是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。

weixin_61611746的博客 1169

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

基于C语言的TCP通信测试程序开发指南

创建套接字(Socket)绑定地址和端口(Bind)开始监听(Listen)接受连接(Accept)数据交互(Send/Recv)关闭连接(Close)创建套接字(Socket)连接服务器(Connect)数据交互(Send/Recv)关闭连接(Close)

数字人生 1398

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

『 Linux 』TCP套接字网络通信程序

TCP套接字提供了面向连接的 , 面向字节流的 , 传输可靠的传输方式;面向连接的TCP是一种面向连接的协议 , 在通信开始之前需要建立联系;这个连接通过三次握手过程建立以确保通信双方已经准备好进行数据传输;面向字节流TCP传输的数据被看作是连续的字节流而不是消息或数据包;这意味应用程序可以将数据作为字节流发送 , TCP将会负责这些字节流按照顺序传送给接收方 , 接收方也会以同样的顺序接收数据;面向字节流也意味着可以直接使用writeread来对该套接字描述符进行操作;

小侯宝的博客 1557

基于TCP协议的通信程序

一、什么是TCP协议? TCP---传输控制协议[有连接的协议] 优点:保证数据安全可靠 缺点:消耗大,效率低 二、TCP协议三次握手 TCP协议在通信的时候,要求通信的双方建立起连接(面向有连接的协议)。在建立连接的过程需要经过三次握手才能完成连接的建立。 第一次握手:Client将标志位SYN置为1,随机产生一个值seq=J,并将该数据包发送给Server,Client进入SYN_SENT状态,等待Server确定。【Client给Server发送创建连接的请求】 第二次握手:Ser.

slom_fxt的博客 1721

Socket通信之TCP通信小程序

背景 之前自己做过关于Socket通信的视频教程,主要是教大家怎么使用Windows提供的Socket函数接口去实现网络通信的。当时讲了两个小程序的实现,一个是TCP通信,另一个是UDP通信。 如今,我把视频教程讲解的内容,重新整理成文档的形式,并对程序简化,使用使用控制台重新开发,方便初学者的理解。本文先讲解使用Socket实现TCP通信的小程序,先把程序实现过程和原理整理成文档,分享给大家...

demongwc的博客 672

使用 Java 编写通信程序:从 TCP 到 UDP 的完整实践

在现代软件开发中,**通信程序**是构建分布式系统、网络服务和实时交互功能的核心。Java 作为一门跨平台语言,通过其强大的 `java.net` 包提供了完整的网络通信能力,支持 TCP/UDP 协议、多线程处理和数据流操作。本文将从底层原理到完整代码示例,逐步讲解如何用 Java 编写一个基础通信程序,并探讨实际开发中的注意事项。

专注于与编程相关的知识内容分享 330
上一篇: UDP通信程序
下一篇: TCP小案例
jtjeeeee
博客等级 码龄5年 9粉丝 109原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值