概述
套接字编程
- TCP套接字编程
- 客户机和服务器程序之间的交互
- 交互具体过程
- Java应用程序示例
- 客户机端
- 服务器
- UDP套接字
- 客户机/服务器程序交互
- 客户机
- 服务器
网络应用程序的核心:客户机程序和服务器程序
运行时,分别创建一个客户机进程和一个服务器进程,互相之间通过套接字读写数据进行通信。
网络应用程序类型:
- 通用应用程序:通过RFC文档所定义的标准协议来实现;程序必须满足RFC所规定的规则;使用与协议相关的端口号。如Web应用
- 专用的应用程序:程序不必符合RFC规则;开发者根据实际应用设计;不能使用RFC中定义的周知端口号
说明:
研发初期,先选择运输层协议
- TCP:面向连接的,为两个端系统之间的数据流动提供可靠的字节流通道
- UDP:无连接的,从一个端系统向另一个端系统发送独立的数据分组,不对交付提供任何保证
TCP套接字编程
运行在不同机器上的进程彼此通过套接字传递报文来进行通信。
- 进程/套接字:房子/门户,即套接字是应用进程和TCP之间的门户
程序开发者可以控制应用层端所有东西;不能控制运输层端。 - TCP服务:从一个进程到另一个进程的可靠字节传输
客户机和服务器程序之间的交互
先建立TCP连接,再进行数据传输
- 客户机程序是连接的发起方;
- 服务器必须先准备好,对客户机程序发起的连续做出响应:
服务器程序事先已经在系统中运行
服务器程序的一个套接字(欢迎套接字)已经打开,准备接收客户机程序发起的连接(敲门)
交互具体过程
- 建立TCP连接
客户机进程向服务器发起一个TCP连接:
创建一个本地套接字,指定相应服务器进程的地址(IP地址和端口号)
建立一个TCP连接:
当服务器听到客户机的连接请求(敲门)时,创建一个新套接字,经过“三次握手”,客户机套接字和服务器套接字之间建立一个TCP连接(直接的虚拟管道)
- 传送数据
TCP连接为客户机和服务器提供了一个直接的传输管道
可靠的,顺序的,字节流的传输
术语:
- 流:流入和流出某进程的一串字符序列
- 输入流:来自某个输入流(如键盘)、或某个套接字(因特网的数据流入套接字)
- 输出流:到某个输出源(如显示器)、或某个套接字(数据通过套接字流向因特网)
Java应用程序示例
客户机和服务器经TCP连接进行通信
- 客户机从键盘读一行字符,通过套接字向服务器发送
- 服务器从套接字读取数据
- 讲该行字符转换成大写
- 讲修改的行通过其连接套接字再回发给客户机
- 客户机从其套接字中读取修改的行,并将该行在显示器上显示。
客户机端
服务器
UDP套接字
UDP是一种无连接的服务,即在两个进程之间没有创建管道时所需的初始握手阶段
进程之间的数据传递以分组为单位进行
分组中含目的进程地址(主机IP地址和端口号)
提供不可靠的传输服务
编程说明:
通信进程之间没有初始握手,不需要欢迎套接字
没有流与套接字相联系
发送主机将信息字节封装生成分组,再发送
接收进程解封收到的分组,获得信息字节
客户机/服务器程序交互
客户机
一个套接字ClientSocket:发送和接收分组
一个输入流InfromUser:与标准输入连接(键盘)
服务器
一个套接字serverSocket:发送和接收分组
最后
以上就是谨慎蚂蚁为你收集整理的&2应用层 - TCP套接字编程TCP套接字编程UDP套接字的全部内容,希望文章能够帮你解决&2应用层 - TCP套接字编程TCP套接字编程UDP套接字所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复