我是靠谱客的博主 谨慎蚂蚁,最近开发中收集的这篇文章主要介绍&2应用层 - TCP套接字编程TCP套接字编程UDP套接字,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

套接字编程

  • TCP套接字编程
    • 客户机和服务器程序之间的交互
      • 交互具体过程
    • Java应用程序示例
      • 客户机端
      • 服务器
  • UDP套接字
    • 客户机/服务器程序交互
      • 客户机
      • 服务器

网络应用程序的核心:客户机程序和服务器程序
运行时,分别创建一个客户机进程和一个服务器进程,互相之间通过套接字读写数据进行通信。

网络应用程序类型:

  • 通用应用程序:通过RFC文档所定义的标准协议来实现;程序必须满足RFC所规定的规则;使用与协议相关的端口号。如Web应用
  • 专用的应用程序:程序不必符合RFC规则;开发者根据实际应用设计;不能使用RFC中定义的周知端口号

说明:
研发初期,先选择运输层协议

  • TCP:面向连接的,为两个端系统之间的数据流动提供可靠的字节流通道
  • UDP:无连接的,从一个端系统向另一个端系统发送独立的数据分组,不对交付提供任何保证

TCP套接字编程

运行在不同机器上的进程彼此通过套接字传递报文来进行通信。

  • 进程/套接字:房子/门户,即套接字是应用进程和TCP之间的门户
    程序开发者可以控制应用层端所有东西;不能控制运输层端。
  • TCP服务:从一个进程到另一个进程的可靠字节传输

客户机和服务器程序之间的交互

先建立TCP连接,再进行数据传输

  • 客户机程序是连接的发起方;
  • 服务器必须先准备好,对客户机程序发起的连续做出响应:
    服务器程序事先已经在系统中运行
    服务器程序的一个套接字(欢迎套接字)已经打开,准备接收客户机程序发起的连接(敲门)

交互具体过程

  1. 建立TCP连接
    客户机进程向服务器发起一个TCP连接:
    创建一个本地套接字,指定相应服务器进程的地址(IP地址和端口号)

建立一个TCP连接:
当服务器听到客户机的连接请求(敲门)时,创建一个新套接字,经过“三次握手”,客户机套接字和服务器套接字之间建立一个TCP连接(直接的虚拟管道)

  1. 传送数据
    TCP连接为客户机和服务器提供了一个直接的传输管道
    可靠的,顺序的,字节流的传输

在这里插入图片描述
术语:

  • 流:流入和流出某进程的一串字符序列
  • 输入流:来自某个输入流(如键盘)、或某个套接字(因特网的数据流入套接字)
  • 输出流:到某个输出源(如显示器)、或某个套接字(数据通过套接字流向因特网)

Java应用程序示例

客户机和服务器经TCP连接进行通信

  • 客户机从键盘读一行字符,通过套接字向服务器发送
  • 服务器从套接字读取数据
  • 讲该行字符转换成大写
  • 讲修改的行通过其连接套接字再回发给客户机
  • 客户机从其套接字中读取修改的行,并将该行在显示器上显示。
    在这里插入图片描述

客户机端

在这里插入图片描述

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

服务器

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

UDP套接字

UDP是一种无连接的服务,即在两个进程之间没有创建管道时所需的初始握手阶段
进程之间的数据传递以分组为单位进行
分组中含目的进程地址(主机IP地址和端口号)
提供不可靠的传输服务

编程说明:
通信进程之间没有初始握手,不需要欢迎套接字
没有流与套接字相联系
发送主机将信息字节封装生成分组,再发送
接收进程解封收到的分组,获得信息字节

客户机/服务器程序交互

在这里插入图片描述

客户机

一个套接字ClientSocket:发送和接收分组
一个输入流InfromUser:与标准输入连接(键盘)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

服务器

一个套接字serverSocket:发送和接收分组
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

最后

以上就是谨慎蚂蚁为你收集整理的&2应用层 - TCP套接字编程TCP套接字编程UDP套接字的全部内容,希望文章能够帮你解决&2应用层 - TCP套接字编程TCP套接字编程UDP套接字所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(56)

评论列表共有 0 条评论

立即
投稿
返回
顶部