套接字编程

本文介绍了套接字编程的基础知识,包括套接字概念、C/S模式、网络字节序及其转换函数。在C/S模式中,服务器端启动并等待客户请求,客户则向服务器发起服务请求并关闭通信通道。网络字节序规定了数据传输的统一标准,避免了大小端问题。最后,文章提到了套接字的具体操作步骤,如创建、绑定、接收、发送和关闭套接字。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

套接字编程

1.1 套接字概念

网络中不同主机上的应用进程之间进行双向通信的端点的抽象:
TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点这种端点
就叫做套接字(socket)或插口

这里出现了几个陌生的概念:

  1. ip地址:依照TCP/IP协议分配给本地主机的网络地址,两个进程要通讯,任一进程首先要知道通讯对方的位置,即对方的IP。
  2. 端口号:用来辨别本地通讯进程,一个本地的进程在通讯时会占用一个端口号,不同的进程端口号不同,因此在通讯前必须分配一个没有被访问的端口号。
  3. 半相关:网络中用一个三元组可以在全局唯一标志一个进程。(三元组:协议,本地ip地址,本地端口号)
  4. 全相关:一个完整的网间进程通信需要由两个进程组成,并且只能使用同一种高层协议,也就是说,不可能通信的一端用TCP协议,而另一端用UDP协议。
  5. 连接:两个进程间的通讯链路。

所以,一个完整的网间通信是一个五元组标识:协议,本地地址,本地端口号,远地地址,远地端口号。这样一个五元组,叫做一个相关,即两个协议相同的版相关才能组合成一个合适的相关。

2.C/S模式简介

在TCP/IP网络应用中,通信的两个进程相互作用的主要模式是客户/服务器(Client/Server,C/S)模式。客户向服务器发出服务请求,服务器接收到请求后,提供相应的服务。

2.1服务器端

其过程是首先服务器要先启动,并根据请求提供相应服务:

  1. 打开通信通道并告诉本地主机,它愿意在某一公认地址上的某一端口接受用户请求。
  2. 等待客户请求到达该端口。
  3. 接收到客户端的服务请求时,处理请求并发送应答信号。接收到并发服务请求,要激活一个新进程来处理这个客户请求(如UNIX系统中fork,exec) 新进程处理此客户的请求,并不需要对其请求做出应答,服务完成后,关闭此新进程与客户的通信链路,并终止。
  4. 返回第2步,继续等待另一个客户请求。
  5. 关闭服务器
2.2客户端
  1. 打开通信通道,并连接到服务器所在主机的特定端口。
  2. 向服务器发服务请求报文,等待并接收应答;继续提出请求。
  3. 请求结束后关闭通信通道并终止。

我们从上面的流程可以得知,客户与服务器进程的作用是非对称的,因此代码不同。服务器进程一般是先启动的,只要系统运行,该服务进程就一直存在&

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值