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协议总结相关推荐

  1. asp.core api 通过socket和服务器通信发送udp_读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  2. 读懂Java中的Socket编程

    Socket,又称为套接字,Socket是计算机网络通信的基本的技术之一.如今大多数基于网络的软件,如浏览器,即时通讯工具甚至是P2P下载都是基于Socket实现的.本文会介绍一下基于TCP/IP的S ...

  3. Java中的网络编程(TCP与UDP)

    什么是Socket? Socket是一个抽象的概念,一个应用程序通过Socket建立一个远程连接,而Socket内部通过TCP/IP协议把数据传送至网络. 简单的来说,Socket就是套接字,由IP地 ...

  4. Python3之socket编程(TCP/UDP,粘包问题,数据传输、文件上传)

    一.socket的定义 Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后 ...

  5. C++ 网络编程下的socket编程(TCP\UDP),连接下位机

    正常情况下我们需要对下位机进行通信需要使用Socket进行连接操作,而在网络编程中又分为面向连接(TCP)和面向无连接(UDP)这两种,针对这两种方式,我们不做具体的原理解释,只说各自的特点和各自的应 ...

  6. 【计算机网络】python——socket编程(TCP/UDP)

    前言 以前做了实验都是直接分享实验报告.反思了一下,实验报告又臭又长,最多只有同做这个实验的朋友会耐着性子看一看.为了提供更有效的知识分享,能为更多的朋友提供一些参考,以后的文章我都会尽量主题鲜明,简 ...

  7. 【网络聊天室】——基于socket编程的TCP/UDP网络聊天服务器

    早期网络刚刚普及的时候,给人们印象最深的就是上网聊天,虽然作为一名上世纪的尾巴刚刚出生的我没有经历过,但仍从有所耳闻,那个时期是网络聊天室风靡的年代,全国知名聊天室大家都争破头的想要进去,基于如上和一 ...

  8. 网络编程及TCP/UDP协议

    网络编程 1.1.概述 地球村:你在西安,一个在美国 打电话--连接--接了--通话 TCP 发短信--发完了就完事了--接收 UDP(丢包) 计算机网络: 计算机网络系统就是利用通信设备和线路将地理 ...

  9. silverlight中的socket编程注意事项

    1.粘包 目前sl中的socket只能用tcp/ip协议,而tcp/ip本质是一个"流"协议,也就是说数据无边界,发送的就是一连串的字节(没有数据包的概念),因此连续发送时有所谓的 ...

  10. 21天学会Java之(Java SE第十三篇):网络编程、TCP/UDP通信

    如今,计算机已经成为人们学习.工作.生活必不可少的工具.人们利用计算机可以和亲朋好友在网上聊天,玩网游或发邮件等,这些功能的实现都离不开计算机网络.计算机网络实现了不同计算机之间的通信,而这些必须依靠 ...

最新文章

  1. 毒鸡汤真相,你被骗了多少年?
  2. HMTL判断ie版本
  3. Kotlin binding+RecyclerView实现支付宝首页更多、应用编辑界面
  4. Java中的ClassLoader
  5. 人生苦短,我用Python!
  6. 浅谈面向对象思想下的 C 语言
  7. C++派生类的构造函数和析构函数
  8. python url拼接_python学习笔记——urllib篇
  9. 渗透测试工程师岗的要求
  10. linux seek原理,Linux内核:seek机制
  11. 2021江苏省高考成绩排名查询,江苏高考成绩排名查询系统,2021年江苏个人成绩一分一段表...
  12. 坚果云企业版服务器端,坚果云团队版和企业版的区别
  13. 对于刚从事Java的小伙伴们的一些话
  14. 电脑一键装机下载重装系统详细教程
  15. 罗马音平假字复制_罗马音平假名可复制吊字
  16. brpc源码学习(一)-butex
  17. Matlab使用libsvm-3.25 heart_scale数据集
  18. 老公,我们现在无家可归了
  19. 指针变量的基本概念详解(go语言基础语法)
  20. uniapp开发微信小程序-7.用户填写表单信息

热门文章

  1. 阶段3 3.SpringMVC·_07.SSM整合案例_05.ssm整合之Spring整合SpringMVC的框架
  2. 【BZOJ 3681】Arietta
  3. 未格式化的硬盘识别失败
  4. 个人收藏的移动端网页布局rem解决方案
  5. Mysql两个引擎对比
  6. 让 “微软雅黑” 在IE6下完美显示
  7. Android Binder 学习中几个问题
  8. Jquery 使用技巧总结
  9. 【观点】失败应聘的五大原因
  10. Delphi创建ActiveX控件,实现安全接口及无界面代码