java中进行socket编程实现tcp、udp协议总结
socket编程
1,计算机进行通信编程的基础是有ip地址加端口号的主机唯一标示、有相应的一致的协议即tcp/ip。ip地址用来区分主机,端口号用来区分计算机上不同的应用软件。
2,java提供的网络功能主要有四大类
1)InetAddress类,封装ip地址代表网络上的硬件资源。
2)URL,统一资源定位符
3)Sockets:使用tcp协议实现网络通信的Socket相关类
4)Datagram:使用udp协议,将数据保存在数据报中通过网络进行通信的相关类。
3,InetAddress类
该类需要通过静态方法InetAddress.getLocalHost()得到实例。 提供了得到主机名,ip地址等的方法,具体可查api文档。该类可以得到本地主机和远程主机的相关硬件信息。
4,URL类
类似这种的字符串叫url,利用该类可以得到url中的各种详细信息,见代码:
5,Socket类和ServerSocket类实现tcp连接
基本原理是通过ServerSocket启动监听程序,Socket发起请求建立连接,并通过绑定在两个对象上的InputStream,OutputSteam流来交换数据。
练习实例思路:
1)建立服务器端监听程序并绑定端口,ServerSocket serverSocket = new ServerSocket(8888); 循环监听程序,若有accept() 方法监听到客户端连接,建立socket连接,并启动响应线程。
2)建立客户端程序,向服务器发送连接请求。Socket socket=new Socket("localhost", 8888);得到此socket上的输出流,并封装成打印流,向服务器发送字符消息。
3)编写服务器端响应的多线程处理程序ServerThread,此类为自己编写非api,使用服务端建立的套接字通道,接收客户端数据,并根据内容回复。
总结: 1)ServerSocket的accept方法得到连接后返回一个Socket对象,即为对等客户端的连接通道。服务端会有很多Socket对象。
2)服务器端需要一个实现多线程的处理类,来并发的处理多个客户端的请求。
3)代码详见程序。
6,通过DatagramPacket、DatagramSocket类实现UDP通信。
其中DatagramPacket表示udp通信的数据报类,通过构造方法可以将通信信息和要发送的地址保存到类中;DatagramSocket表示一次端到端的通信,传入DatagramPacket信息,DatagramSocket的send方法表示发送。receive方法表示接收,并且是阻塞式的在得到数据报发入前不会进行任何操作!
7,整体总结
1)不管是tcp还是udp服务器端肯定需要多线程,要注意设置线程优先级提高性能。
2)tcp中,关闭了socket中的输出流,则socket也关闭了,因此,可在连接中不关流,在确定没有输出输入的时候再关闭socket;
3)可不传输字符串,而使用ObjectInputStream和ObjectOutputStream传输对象
4)结合io流的基本用法,可以用通讯类在不同的机器间发送文件。
5) 两个协议实现中receive方法和accept方法均为阻塞式的。
转载于:https://www.cnblogs.com/sunqian/p/5223897.html
java中进行socket编程实现tcp、udp协议总结相关推荐
- asp.core api 通过socket和服务器通信发送udp_读懂Java中的Socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- 读懂Java中的Socket编程
Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...
- Java中的网络编程(TCP与UDP)
什么是Socket? Socket是一个抽象的概念,一个应用程序通过Socket建立一个远程连接,而Socket内部通过TCP/IP协议把数据传送至网络. 简单的来说,Socket就是套接字,由IP地 ...
- Python3之socket编程(TCP/UDP,粘包问题,数据传输、文件上传)
一.socket的定义 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后 ...
- C++ 网络编程下的socket编程(TCP\UDP),连接下位机
正常情况下我们需要对下位机进行通信需要使用Socket进行连接操作,而在网络编程中又分为面向连接(TCP)和面向无连接(UDP)这两种,针对这两种方式,我们不做具体的原理解释,只说各自的特点和各自的应 ...
- 【计算机网络】python——socket编程(TCP/UDP)
前言 以前做了实验都是直接分享实验报告.反思了一下,实验报告又臭又长,最多只有同做这个实验的朋友会耐着性子看一看.为了提供更有效的知识分享,能为更多的朋友提供一些参考,以后的文章我都会尽量主题鲜明,简 ...
- 【网络聊天室】——基于socket编程的TCP/UDP网络聊天服务器
早期网络刚刚普及的时候,给人们印象最深的就是上网聊天,虽然作为一名上世纪的尾巴刚刚出生的我没有经历过,但仍从有所耳闻,那个时期是网络聊天室风靡的年代,全国知名聊天室大家都争破头的想要进去,基于如上和一 ...
- 网络编程及TCP/UDP协议
网络编程 1.1.概述 地球村:你在西安,一个在美国 打电话--连接--接了--通话 TCP 发短信--发完了就完事了--接收 UDP(丢包) 计算机网络: 计算机网络系统就是利用通信设备和线路将地理 ...
- silverlight中的socket编程注意事项
1.粘包 目前sl中的socket只能用tcp/ip协议,而tcp/ip本质是一个"流"协议,也就是说数据无边界,发送的就是一连串的字节(没有数据包的概念),因此连续发送时有所谓的 ...
- 21天学会Java之(Java SE第十三篇):网络编程、TCP/UDP通信
如今,计算机已经成为人们学习.工作.生活必不可少的工具.人们利用计算机可以和亲朋好友在网上聊天,玩网游或发邮件等,这些功能的实现都离不开计算机网络.计算机网络实现了不同计算机之间的通信,而这些必须依靠 ...
最新文章
- 毒鸡汤真相,你被骗了多少年?
- HMTL判断ie版本
- Kotlin binding+RecyclerView实现支付宝首页更多、应用编辑界面
- Java中的ClassLoader
- 人生苦短,我用Python!
- 浅谈面向对象思想下的 C 语言
- C++派生类的构造函数和析构函数
- python url拼接_python学习笔记——urllib篇
- 渗透测试工程师岗的要求
- linux seek原理,Linux内核:seek机制
- 2021江苏省高考成绩排名查询,江苏高考成绩排名查询系统,2021年江苏个人成绩一分一段表...
- 坚果云企业版服务器端,坚果云团队版和企业版的区别
- 对于刚从事Java的小伙伴们的一些话
- 电脑一键装机下载重装系统详细教程
- 罗马音平假字复制_罗马音平假名可复制吊字
- brpc源码学习(一)-butex
- Matlab使用libsvm-3.25 heart_scale数据集
- 老公,我们现在无家可归了
- 指针变量的基本概念详解(go语言基础语法)
- uniapp开发微信小程序-7.用户填写表单信息