Java网络编程之Socket编程

2023-11-12

Socket编程

下图是基于TCP协议的客户机与服务器通信逻辑.客户机使用Socket类型的套接字与服务器会话,服务器则需要使用ServerSocket类型的套接字侦听网络连接,再使用Socket类型的套接字与客户机会话.会话都是通过基于套接字构建的输入流与输出流进行的.

在这里插入图片描述
在这里插入图片描述

客户端代码:

// TODO Auto-generated method stub
		Socket clientSocket=null;
		BufferedReader in=null;
		BufferedWriter out=null;
		try{
		clientSocket=new Socket();
		SocketAddress remoteAddr=new InetSocketAddress("192.168.52.1",5000);
		System.out.println("1.创建客户机套接字成功!");
		
		clientSocket.connect(remoteAddr);//访问服务器指定的地址和端口
		System.out.println("2.客户机连接服务器localhost端口5000成功!");
		System.out.println("客户机使用的地址端口:"+clientSocket.getLocalSocketAddress());
		
		in=new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
	    out=new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
		String sendStr="你好!";
		out.write(sendStr);
		out.newLine();
		out.flush();
		System.out.println("3.1向服务器发送字符串成功!"+sendStr);
		String revStr=in.readLine();
		System.out.println("3.2从服务器接收回送字符串成功!"+revStr);
		}catch(IOException e){
			System.out.println("异常信息:"+e.getMessage());
		}
		try{
			if(in!=null) in.close();
			if(out!=null) out.close();
			if(clientSocket!=null) clientSocket.close();
		}catch(IOException e){
			System.out.println("异常信息:"+e.getMessage());
		}
	}

服务器代码:

// TODO Auto-generated method stub
		BufferedReader in=null;
		BufferedWriter out=null;
		ServerSocket listenSocket=null;
		Socket clientSocket=null;	
		try {
			listenSocket = new ServerSocket();
			SocketAddress serverAddr=new InetSocketAddress("192.168.52.1", 5000);
			listenSocket.bind(serverAddr);//绑定服务器的工作地址和端口
			System.out.println("1.服务器启动成功!开始在localhost的5000端口侦听连接...");
			clientSocket=listenSocket.accept();
			in=new BufferedReader(new InputStreamReader(clientSocket.getInputStream())); 
		    out=new BufferedWriter(new OutputStreamWriter(clientSocket.getOutputStream()));
		    String recvStr=in.readLine();
		    System.out.println("3.1服务器收到字符串:"+recvStr);
		    out.write(recvStr);
		    out.newLine();
		    out.flush();
		    System.out.println("3.2服务器回送字符串成功:"+recvStr);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			System.out.println("异常信息:"+e.getMessage());
		}
        //关闭套节字和流
		try{
			if(in!=null) in.close();
			if(out!=null) out.close();
			if(listenSocket!=null) listenSocket.close();
			if(clientSocket!=null) clientSocket.close();
		}catch(IOException e){
			System.out.println("异常信息:"+e.getMessage());
		}
	}

注意:
1.网络编程涉及到图形界面时,一定要将accept函数放到子线程中,避免卡住UI线程
2.readline函数是一个阻塞函数,只有遇到‘\r’或者’\n’才会返回读取的结果

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java网络编程之Socket编程 的相关文章

  • Euromap 63协议认识

    Euromap 63协议认识 一 用途 Euromap 63是欧洲塑料和橡胶机械制造商协会颁布的专用于注塑机和上位计算机进行数据交互的协议 全称 Euromap 63 SPI SPI 塑料工业协会 Euromap 63的目标是为不同制造商的
  • 计算机网络——数字数据的数字编码

    计算机网络 数字数据的数字编码 数字数据的数字编码就是如何把数字数据用物理信号的波形表示 即用高低电平表示二进制 1 不归零码 正电平代表1 负电平代表0 2 归零码 正脉冲代表1 负脉冲代表0 3 曼彻斯特编码 位周期中心的上跳代表0 周
  • 2.6.1 ADSL技术

    ADSL技术 即 非对称数字用户线技术 利用 数字技术 对 现有的 模拟电话用户线 进行改造 使其能够承载宽带数字业务 标准模拟电话信号的 频带 被限制在 300 3400 Hz 的范围内 无法承载宽带数字业务 但 用户线本身 可通过的 信
  • 【计算机网络】湖科大微课堂笔记 p50-53 路由选择协议概述、路由信息协议RIP、开放最短路径优先OSPF、边界网关协议BGP的基本工作原理

    文章目录 路由选择协议概述 小结 路由信息协议RIP的基本工作原理 小结 一些例题 开放最短路径优先OSPF的基本工作原理 小结 边界网关协议BGP的基本工作原理 小结 一些例题 路由选择协议概述 因特网采用分层次的路由选择协议 域间路由选
  • 网络基础知识

    网络编程 2 网络的体系结构 七层模型 四层模型 因为网络通信比较麻烦 所以网络采用分层思想 OSI开放系统互联网模型 七层模型 高层 应用层 表示层 会话层 低层 传输层 网络层 数据链路层 物理层 驱动 网卡 仅仅是一种理想状态 现实中
  • IP组播 —— IP组播的概念和地址

    一 IP数据报的三种传输方式 二 IP组播地址的范围及特点 三 硬件组播
  • 计算机网络学习笔记第四章(网络层)超详细整理

    目录 4 1 网络层概述 1 简介 2 总结 4 2 网络层提供的两种服务 1 面向连接的虚电路服务 2 无连接的数据报服务 3 虚电路服务与数据报服务的对比 4 3 IPv4 1 概述 2 分类编制的IPv4地址 2 1 简介 2 2 总
  • 计算机网络物理层概述

    物理层 一 物理层基本概念 用于物理层协议常被称为物理层规程 物理层有四个特性 1 机械特性 指明接口所用接线器的形状和尺寸 引脚数目和排列 固定和锁定装置等 平时常见的各种规格的插件都有严格的标准化规定 2 电器特性 指明在接口电缆的各条
  • 计算机网络那些事之 MTU 篇

    哈喽大家好 我是咸鱼 今天我们来聊聊计算机网络中的 MTU Maximum Transmission Unit 什么是 MTU MTU Maximum Transmission Unit 是指数据链路层中的最大传输单元 通俗点来讲 MTU
  • 一文搞懂ARP协议

    更多文章请关注我的个人微信公众号 极客熊猫 欢迎扫码关注 什么是ARP ARP是Address Resolution Protocol的首字母缩写 即地址解析协议 如果一台主机要将一个帧发送到另一台主机 只知道这台主机的IP地址是不够的 还
  • 计算机网络运输层运输层协议概述

    运输层协议概述 进程之间的通信 下图说明运输层的作用 可以看出网络层为主机之间提供逻辑通信 而运输层为应用进程之间提供端到端的逻辑通信 根据应用程序的不同需求 运输层有两种不同的运输协议 1 面向连接的TCP 2 无连接的UDP 运输层的两
  • 期末备考 |《计算机网络》期末备考资料包来啦!

    写在前面 不知不觉又到了学期的末尾 不知道各位计算机er的 专业课复习得怎么样了呢 为了帮助大家更好地 备战期末 从今天开始 岛主将持续为大家更新 计算机期末备考资料 为同学们的绩点护航 今天岛主为大家带来的是 计算机网络 期末备考资料包
  • P2P应用

    目录 一 P2P的简介 二 P2P的工作方式 1 具有集中目录服务器的P2P工作方式 2 具有全分布式结构的P2P文件共享程序 一 P2P的简介 P2P 对等连接 是指两台主机在通信时 并不区分哪一个是服务请求方和哪一个是服务提供方 只要两
  • 计算机网络基础——常用的中英文网络述语大全,强烈建议收藏

    系统网络体系结构 System Network Architecture SNA 国际标准化组织 International Organization for Standardization ISO 开放系统互连基本参考模型 Open Sy
  • 计算机网络基础知识——OSI七层模型

    OSI 七层模型是计算机网络体系结构中的一个重要概念 它由七个层次组成 每一层都有其特定的功能和作用 这个模型最初是由 ISO 国际标准化组织 提出的 用于描述计算机网络中不同层次之间的交互方式 虽然 OSI 模型是一个理论模型 但是在实际
  • 网络安全(黑客)自学秘籍

    想自学网络安全 黑客技术 首先你得了解什么是网络安全 什么是黑客 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 无论网络 Web 移动 桌面 云等哪个
  • 计算机网络基础——常用的中英文网络述语大全,强烈建议收藏

    系统网络体系结构 System Network Architecture SNA 国际标准化组织 International Organization for Standardization ISO 开放系统互连基本参考模型 Open Sy
  • 网络安全(黑客)自学秘籍

    想自学网络安全 黑客技术 首先你得了解什么是网络安全 什么是黑客 网络安全可以基于攻击和防御视角来分类 我们经常听到的 红队 渗透测试 等就是研究攻击技术 而 蓝队 安全运营 安全运维 则研究防御技术 无论网络 Web 移动 桌面 云等哪个
  • 计算机网络基础 走入计算机行业的重中之重

    计算机网络是指将地理位置不同的 功能独立的多台计算机通过通信线路连接起来 以功能完善的网络软件支撑 实现资源共享和信息传递的系统 对于信息安全高级工程师来说 理解计算机网络的基本原理是至关重要的 下面我们将逐一解析计算机网络的核心概念 网络
  • 【网络安全】00后程序员,找 Bug 赚了 6,700,000元!他是怎么挖洞致富的?

    19岁 很多人正是上大学 仍伸手向父母要生活费的年纪 可有一位 00 后阿根廷少年 Santiago Lopez 靠自学成才 赚取了 100 万美元 折合人民币约 670 万元 的 Bug 赏金 成为世界上第一个白帽黑客的百万富翁 美元 少

随机推荐

  • 深度学习实时表情识别

    背景 计算机动画代理和机器人为人机交互带来了新的维度 这使得计算机如何在日常活动中影响我们的社交生活变得至关重要 面对面的交流是一个以毫秒级的时间尺度运行的实时过程 这个时间尺度的不确定性是相当大的 这使得人类和机器有必要依赖感官丰富的感知
  • 超详细的R语言热图之complexheatmap系列(1)

    获取更多R语言和生信知识 请关注公众号 医学和生信笔记 公众号后台回复R语言 即可获得海量学习资料 目录 第一章 简介 1 1 设计理念 1 2 各章节速览 第二章 单个热图 2 1 颜色 2 2 行标题 列标题 2 3 聚类 2 3 1
  • 深度访谈:“告诉我,AI对企业到底有什么价值?”

    Eden是一家连锁经营企业的负责人 最近困扰他的是遍布全国直营和加盟店的数千名员工 如何在后疫情时代把企业的运营效率通过智能化提升一个层级 AskBot团队专注企业内部智能化 用AI去辅助人解决重复高频问题 因此才有了双方下面这一系列围绕企
  • matlab分频.m,分频器m是什么意思 音响分频器m. TW那个代表高音那个代表是低音?...

    音响分频器m TW那个代表高音那个代表是低音 T是treble 的缩写 指高音 M是mediant或middle的缩写 指中音 W是woof的缩写 指低音 音箱分频器m m 什么意思 音箱分频器m m 应该是接中音喇叭负 正两端 T T 接
  • 尚硅谷周阳老师 SpringCloud第二季学习笔记

    前言 首先感谢尚硅谷周阳老师的讲解 让我对springcloud有了很好的理解 周阳老师的讲课风格真的很喜欢 内容充实也很幽默 随口一说就是一个段子 我也算是周阳老师的忠实粉丝啦 先说说课程总体内容 以下是整理的笔记 SpringCloud
  • 带宽是什么

    带宽是什么 带宽 band width 又叫频宽 是指在固定的的时间可传输的资料数量 亦即在传输管道中可以传递数据的能力 在数字设备 中 频宽通常以bps表示 即每秒可传输之位数 在模拟设备中 频宽通常以每秒传送周期或赫兹 Hz 来表示 带
  • 超好用:免费的图床

    经常写文章的小伙伴可能会头疼 图片需要一张一张的上传 费劲也耗时 今天就推荐几款超简单的图床工具 图床就是一个在网络上存储图片的地方 目的是为了节省本地服务器空间 加快图片打开速度 话不多说 进入正题 非技术手段 1 SM MS 永久存储免
  • 根据任务需求自制数据集:Pytorch自定义数据集Dataset代码示例(有监督学习,输入输出均为图像)

    自定义数据集 一 使用torchvision io读取照片 二 使用PIL读取照片 一 使用torchvision io读取照片 import numpy as np import torch from PIL import Image i
  • eNSP 打开警告:请将eNSP相关应用程序添加到windows firewall的允许程序列表,并允许其在公用网络上运行!

    文章目录 1 警告截图 2 解决办法 1 警告截图 2 解决办法 思路 按照警告的提示信息 将 eNSP 相关应用添加到 windows firewall 防火墙 的允许程序列表 并允许其在公用网络上运行 此处以 Win 10 为例 找到对
  • yolov5训练PASCAL VOC数据集调试报错记录

    1 UserWarning torch meshgrid in an upcoming release it will be required to pass the indexing argument 解决方法 找到目录D Users J
  • h5开发网站-css实现页面的背景固定定位

    一 需求 在页面滚动时 背景图片保持不变 而不是跟随滚动 二 解决方式 使用背景固定定位 只需要在CSS中增加一个background attachment fixed 属性即可 具体代码 div class item right img
  • Merkle Patricia Tree (MPT) 以太坊merkle技术分析

    一 传统merkle树缺陷 我的这篇博客merkle tree 分析 详细解释了merkle树的原理和作用 然而传统的merkle树有他的局限性 以下对Vitalik blog原文的翻译可以很好的阐述 传统merkle树的一个特别的限制是
  • 创业公司如何提高管理能力?十条法则教你!

    1 明确的架构 接手任何一个部门的最重要的事情 是明确或者重新调整组织架构 架构的关键是 谁在什么位置 负责什么内容 一定要明确 所谓 明确 的意思是 不允许两个人交叉负责 也不允许集体领导 不允许有模糊的领域 出了问题 大家都清楚谁应该出
  • ubuntu的pycharm或程序卡主,强制关闭方法

    首先打开终端 输入 ps ef 查看正在运行的所有程序 找到想要关闭的程序如pycharm 3078和3192 输入 kill s 9 3078 kill s 9 3192 即可关闭pycharm 或者关闭别的程序
  • ssm整合redis

    1 配置文件 redis properties redis host 127 0 0 1 redis port 6379 redis password redis maxIdle 50 redis maxTotal 100 redis ma
  • ARCode和ARKit官网

    ARCode官网 https developers google cn ar ARCode支持机型 https developers google cn ar discover supported devices ARKit官网 https
  • Mysql中的not in和null

    给定一个表 tree id 是树节点的编号 p id 是它父节点的 id tree id p id 1 null 2 1 3 1 4 2 5 2 树中每个节点属于以下三种类型之一 叶子 如果这个节点没有任何孩子节点 根 如果这个节点是整棵树
  • OCR测试对比

    文字密度 测试一 测试二 测试三 测试四 颜色 测试一 测试二 测试三 测试四 阴影 测试一 测试二 测试三 测试四
  • Java调用python打包的程序.exe,包括获取exec()中打印的日志,亲测有效

    python写了一个方法 windows平台上怎么被Java服务调用呢 最简单的办法 python利用pyinstaller打包成 exe程序 Java程序通过Process调用 想同时获取 exe执行过程中打印出的日志用ProcessBu
  • Java网络编程之Socket编程

    Socket编程 下图是基于TCP协议的客户机与服务器通信逻辑 客户机使用Socket类型的套接字与服务器会话 服务器则需要使用ServerSocket类型的套接字侦听网络连接 再使用Socket类型的套接字与客户机会话 会话都是通过基于套