一起talk C栗子吧(第一百四十七回:C语言实例--socket通信一)



各位看官们,大家好,上一回中咱们说的是socket属性的例子,这一回咱们说的例子是socket通信。闲话休提,言归正转。让我们一起talk C栗子吧!

看官们,我们在前面章回中介绍了socket的基本概述,这一回中我们将介绍如何使用socket来实现两个进程之间的通信。为了方便大家理解socket通信的方式,我们把通信的双方分别称作客户端和服务器端。大家都知道,套接字有两种类型:流套接字和数据报套接字。不同类型的套接字,通信的方式也不同,本章回中我们先介绍流套接字的通信方式,数据报套接字的通信方式将在后面章回中进行介绍。

下面是客户端和服务器端实现通信的详细步骤:

客户端实现通信的步骤

  • 1.创建客户端套接字(socket);
  • 2.设置客户端套接字的属性:域,类型和协议;
  • 3.使用客户端套接字和服务器进行连接(connect);
  • 4.连接成功后,通过操作客户端套接字来实现客户端与服务器的通信(read,write,send,recv);
  • 5.释放套接字,断开客户端与服务器端的通信(close,shutdown);

服务器端实现通信的步骤

  • 1.创建服务器端套接字(socket);
  • 2.设置服务器端套接字的属性:域,类型和协议;
  • 3.把服务器端的套接字和服务器的地址绑定在一起,本质上是在指定服务器端的通信进程(bind);
  • 4.服务器端创建套接字队列,为通信做好准备,开始监听客户端发来的通信连接请求(listen);
  • 5.服务器端接受客户端发来的连接请求,并且获得与客户端匹配的socket(accept);
  • 6.连接成功后,通过操作步骤5中获得的套接字来实现客户端与服务器的通信(read,write,send,recv);
  • 7.释放套接字,断开服务器端与客户端的通信(close,shutdown);

在上面的步骤中,我们把每个步骤中需要使用到的系统调用都列出来了,它们位于括号中。括号中大部分的系统调用大家可能还不了解,或者是第一次见到,大家不用担心,我们在后面的章回中会介绍这些系统调用。不过,括号中的系统调用也有我们熟悉的,比如我们在前面章回中介绍过的read,write。

各位看官,关于socket通信的例子咱们就说到这里。欲知后面还有什么例子,且听下回分解 。


时间: 2024-10-08 00:51:22

一起talk C栗子吧(第一百四十七回:C语言实例--socket通信一)的相关文章

一起talk C栗子吧(第一百五十一回:C语言实例--socket通信地址)

各位看官们,大家好,上一回中咱们说的是socket通信接口的例子,这一回咱们说的是socket通信地址.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们使用socket通信时需要知道通信的地址,这好比我们发电子邮件时需要有一个邮件地址一样.其实我们在介绍socket通信接口时就提到过通信地址,只是没有详细介绍而已,当时还有客户提问呢.今天我们将详细介绍socket的通信地址. socket的通信地址主要是用来标识通信双方,用程序的观点来看,就是用来标识程序中通信的计算机以及其进程

一起talk C栗子吧(第一百四十九回:C语言实例--socket通信三)

各位看官们,大家好,上一回中咱们说的是socket通信的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中介绍了socket通信的步骤,当时提到了实现这些步骤使用的系统调用,当时有些看官不理解这些系统调用,今天我们趁热打铁来介绍这些系统调用. int socket(int domain, int type, int protocol) 该函数用来创建一个socket; 该函数的三个参数分别对应socket的三个属性:域,类型和协议: 该函数运

一起talk C栗子吧(第一百四十八回:C语言实例--socket通信二)

各位看官们,大家好,上一回中咱们说的是socket通信的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中介绍了套接字的通信步骤,限于时间的原因, 我们只介绍了流套接字的通信步骤.这一回中我们将介绍数据报套接字的通信步骤. 下面是客户端和服务器端实现通信的详细步骤: 客户端实现通信的步骤: 1.创建客户端套接字(socket): 2.设置客户端套接字的属性:域,类型和协议: 3.通过操作客户端套接字来实现客户端与服务器的通信(sendto,r

一起talk C栗子吧(第一百五十三回:C语言实例--socket通信地址系统调用一)

各位看官们,大家好,上一回中咱们说的是计算机中大小端的例子,这一回咱们说的例子是socket通信地址的系统调用 .闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在前面的章回中介绍了套接字的通信地址,这一回中我们将介绍操作套接字通信地址的系统调用.大家都知道套接字的通信地址与套接字的域有关,接下来,我们依据套接字的通信域分别进行介绍. AF_UNIX域的通信地址 AF_UNIX域的通信地址本质上是文件的目录,文件目录存储在本地计算机中,而且使用该域通信时,通信双方都位于同一台计算

一起talk C栗子吧(第一百五十四回:C语言实例--socket通信地址系统调用二)

各位看官们,大家好,上一回中咱们说的是socket通信地址系统调用的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回介绍的通信地址系统调用有效地解决了数据存储方式的问题,不过,还有一个系统调用也可以解决这种问题,这一回我们将介绍该系统调用:getaddrinfo. 函数原型 该系统调用从其名字上看是用来获取地址的信息,这里的地址主要指套接字通信地址.它获取到的地址信息不需要进行字节序转换,我们可以直接用来进行套接字通信.不过,我们不能只看名字

一起talk C栗子吧(第一百四十六回:C语言实例--socket属性)

各位看官们,大家好,上一回中咱们说的是socket概述的例子,这一回咱们说的例子是socket属性.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一 回中对socket做了基本的介绍,这一回我们主要是介绍socket的属性. socket主要有三个属性: 域(domain) 类型(type) 协议(protocol) 域表示socket的通信范围.比如,我们通过互联网通信时使用的域为AF_INET(表示IPv4,与现在使用的IPv6对应的域是AF_INET6),我们在本地通

一起talk C栗子吧( 第一百五十回:C语言实例--socket通信接口二)

各位看官们,大家好,上一回中咱们说的是socket通信的例子,这一回咱们继续说该例子.闲话休提,言归正转.让我们一起talk C栗子吧! 看官们,我们在上一回中介绍了套接字通信过程中使用的系统调用,这些系统调用具有通用性,在任何类型的套接字通信过程中都可以使用它们.今天,我们将介绍一些专门用来通过套接字发送和接收数据的系统调用.这些系统调用的功能十分相似,只是在操作的细节上不相同.接下来我们分别介绍他们. 发送数据的系统调用 ssize_t send(int sockfd, const void

一起talk C栗子吧(第十七回:C语言实例--栈二)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C栗子吧! 看官们,上一回中咱们说的是栈和特点和基本操作,最后通过顺序存储的方式实现了栈,这一回咱们继续 说栈,不过咱们这一回说的是栈的链式存储方式. 在代码中通过双向链表来实现栈的链式存储.入栈操作沿着表头到表尾的方向进行,出栈操作与其正好相 反(就把它当作双向链表的一个使用实例吧).栈的结点可以看作是链表中的结点,对栈的操作,可以看 作是在链表中进行插入或者删除结点

一起talk C栗子吧(第二回:C语言实例--判断闰年)

各位看官们,大家好,从今天开始,我们讲大型章回体科技小说 :C栗子,也就是C语言实例.闲话休提, 言归正转.让我们一起talk C语言实例吧! 看官们,上一回中咱们给小说做了个开头,这一回咱们正式说C例子,这回说的例子是:判断闰年. 看官们,闰年是什么?这个是地理天文方面的概念.如果不明白的话,自己百度去,哈哈.我也偷一把懒. 看官们,判断闰年的方法有两种: 如果某年能被4整除,但是不能被100整除,那么这一年就是闰年. 如果某年能被400整除,那么这一年就是闰年. 看官们看到整除肯定想到除法了