首页
学习
活动
专区
圈层
工具
发布

【Linux】: Socket 编程

通过这种设计,Socket API 可以通过统一的函数接口,处理不同类型的地址格式。...通用性带来的优势 Socket API 的这种设计带来了极大的通用性,使得开发者在同一套代码中可以处理不同的协议类型。...这样只要取得某种 ​​​​​​​sockaddr 结构体的首地址,不需要知道具体是哪种类型的sockaddr结构体,就可以根据地址类型字段确定结构体中的内容 socket API 可以都用 stsockaddr...* 类型表示,在使用的时候需要强制转化成sockaddr_in,这样的好处是程序的通用性,可以接收IPv4, IPv6, 以及UNIX Domain Socket各种类型的 ​​​​​​​sockaddr...总的来说 通过 sockaddr 结构体,Socket API 实现了网络通信和本地通信的统一接口 它的设计理念类似于“多态”,即通过一个通用的接口来处理多种类型的地址格式 7.

1.4K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【Linux网络】封装Socket

    在前面几篇文章中,我们实现了Socket编程,也就是基于UDP和TCP进行了网络编程,通过这几次编程我们已经熟悉了Socket编程相关的系统调用,那么这篇文章我们就来使用模版方法模式封装一个Socket...,而不是直接返回一个int类型的文件描述符,这样做的好处是,在后续使用该文件描述符时可以直接通过套接字来调用封装的函数,而如果是int类型的话,只能使用原始的系统调用,但我们已经封装了就尽量使用封装的系统调用...() // 无参构造listensockfd :_sockfd(defaultfd) {} // 将connect返回的文件描述符构造为套接字类型...失败时: -1: 发生错误,并设置全局变量 errno 以指示具体的错误类型。 连接关闭时: 0: 这表示对端已经优雅地关闭了连接(对于 TCP 来说,就是收到了 FIN 包)。...失败时: -1: 发生错误,并设置全局变量 errno 以指示具体的错误类型。

    15410

    linux下socket编程

    Socket soket接口是TCP/IP网络的API。网络的socket数据传输是一种特别的I/O,socket也是一种文档描述符。...常用的socket类型有:流式socket(SOCK_STREAM)、数据报socket(SOCK_DGRAM)....其中流式socket是采用面向连接的TCP服务,而数据报socket则是无连接的UDP服务 Socket建立     调用: int socket(int domain, int type, int...type:指定socket的类型,分为:SOCK_STREAM(TCP)、SOCK_DGRAM(UDP),SOCK_RAW(原始socket,允许socket调用底层协议)     protocol:通常赋值为...收到连接请求时,socket执行体将建立一个新的socket,执行体将这个新socket和请求连接进程的地址联系起来,收到服务请求的初始socket仍能够继续在以前的 socket上监听,同时能够在新的

    5K70

    Linux Socket 收发Json

    如果对你有帮助,麻烦点个在看或点个赞,感谢~ 不管是Qt开发还是linux 嵌入式应用开发,一个人的核心竞争力还是不断思考,也就是不断琢磨。...下面的程序主要是Linux C Socket 读取JSON文件并传输,然后再写入文件,其中使用了cJSON库,关于cJSON库不过多介绍,主要介绍整体的思路。 1....Server 端 使用的是socket 阻塞式,没有使用select、poll、epoll等 接收端按照JSON格式解析数据,并提取感兴趣Key所对应的Value 程序功能挺快就可以做好,做完之后进行拆解...,将socket通信独立出来,JSON解析、写文件、响应客户端JSON数据等分别写成函数。...小结 编译JSON时需要链接linux的数学库 自己琢磨如何拆解函数功能 应用程序也主要是调用别人的api,那么你的核心竞争力是什么呢 ? 如需程序工程可在公众号后台留言。

    5.7K20

    Linux系统下socket编程socket接口介绍(二)

    前言 在上一篇文章里面我们介绍了TCP的三次握手和四次挥手过程的介绍以及网络编程里面的一些api接口函数的介绍——Linux系统下socket编程之socket接口介绍(一)。...函数介绍 - 发送和接收 - (1)send和write: 首先说明的一点,之前介绍的socket这个函数,非常类似我们之前介绍的open函数,他们都会返回一下文件描述符;所以这里的send函数和write...(这个转换完后不能用于网络传输,还需要调用htons或htonl函数才能将主机字节顺序转化为网络字节顺序,这两个函数先不讲,实战遇到的话,再进行解析),具体可以看下面Linux的源文: inet_aton...(2)struct sockaddr,这个结构体是linux的网络编程接口中用来表示IP地址的 标准结构体,bind、connect等函数中都需要这个结构体,这个结构体是兼容IPV4和IPV6的。...(3)typedef uint32_t in_addr_t:网络内部用来表示IP地址的类型。

    4.7K20

    linux udp编程_linux中socket编程

    在前面的文件中,我们介绍了linux网络编程中与IP相关的知识和常用的函数总结,本文针对具体的UDP通信,来详细的介绍UDP通信的使用,包括UDP通信中的点对点通信,多播,广播等。...当然,在我们服务端创建socket后,主动往外发送一个数据,这样即使我们不进行绑定,我们依然可以收到数据,这只是系统通过我们的发送,自动的绑定了一个端口,这个并不是我们想要的,实际的使用中,也并不推荐这种方式...后,配置一下套接字,允许进行发送广播消息,上代码 int set_broadcast = 1; setsockopt(socket, SOL_SOCKET, SO_BROADCAST, &set_broadcast...解决方法如下:(允许端口重用) int on = 1; ret = setsockopt(udp_net_sta.socket, SOL_SOCKET, SO_REUSEADDR, &on, sizeof...(int)); if (ret < 0) { perror("socket set SO_REUSEADDR failed"); } 2、服务端程序,在创建完socket后,有一个bind的操作

    13.3K10

    Linux C Socket Api详解

    参数type确定套接字的类型,进一步确定通信特征。下图给出了一些类型,但在实现中可以自由增加对其他类型的支持。 ? 参数protocol通常是0,表示按给定的域和套接字类型选择默认的协议。...调用socket与调用open类型,均可获得用于输入、输出的文件描述符。不用的时候记得close关闭。 2. 寻址 如何确定一个目标通信进程?...Linux系统是小端字节序。 2.2 地址格式 地址确定了特定通信域中的套接字端点,地址格式与特定的通信域相关。...注意:linux的man命令可以查看api的详细说明,而且还有例子,也挺不错的。 4....Linux Socket Server 与 Client 例子 个人觉得这只是套接字的入门,如果一个服务器要连接多个客户端呢?以后有机会和大家一起分享下select的套接字用法。

    6.6K10

    【Linux网络#2】: Socket 编程

    个人主页:island1314 个人专栏:Linux—登神长阶 1....通过这种设计,Socket API 可以通过统一的函数接口,处理不同类型的地址格式。...通用性带来的优势 Socket API 的这种设计带来了极大的通用性,使得开发者在同一套代码中可以处理不同的协议类型。...这样只要取得某种 sockaddr 结构体的首地址,不需要知道具体是哪种类型的sockaddr结构体,就可以根据地址类型字段确定结构体中的内容 socket API 可以都用 stsockaddr* 类型表示...总的来说 通过 sockaddr 结构体,Socket API 实现了网络通信和本地通信的统一接口 它的设计理念类似于“多态”,即通过一个通用的接口来处理多种类型的地址格式 7.

    48210

    【Linux】socket网络编程基础

    编程基础 1、调用接口 (一)创建描述符 #include socket.h> int socket(int domain, int type, int protocol); 返回值:成功返回套接字描述符...通信域 意义 AF_INET IPv4网络协议 AF_INET6 IPv6网络协议 AF_UNIX 或 AF_LOCAL 用于本地通信,可在同一台机器的不同进程间进行高效数据传输 type:指定套接字类型...套接字类型 意义 SOCK_STREAM 流式套接字,基于TCP实现 SOCK_DGRAM 数据报套接字,基于UDP实现 SOCK_RAW 原始套接字,允许程序直接访问底层网络协议 protocol...函数创建、bind 函数绑定地址和端口,并且通过 listen 函数设置为监听状态的套接字描述符 addr:一个指向 struct sockaddr 类型的指针,它存储了发起连接请求的客户端的地址信息...addrlen:这是一个指向 socklen_t 类型的指针,用于传入 addr 所指向结构体的长度,并且在函数返回时,该指针指向的值会被更新为实际存储的客户端地址信息的长度,这里是输入输出型参数

    54310

    Linux网络-------1.socket编程基础---(UDP-socket)

    、 4.socket编程接口 // 创建 socket ⽂件描述符 (TCP/UDP, 客⼾端 + 服务器) int socket(int domain, int type, int protocol...); // 开始监听socket (TCP, 服务器) int listen(int socket, int backlog); // 接收请求 (TCP, 服务器) int accept(int...(需要从外部得到ip和port) 详细解释sockaddr_in结构: 正好对应着 16位地址类型,16位端口号,32位IP地址!!!!--------填充位不考虑!!...创建套接字,相当于打开了一个网络文件 _sockfd = socket(AF_INET, SOCK_DGRAM, 0);//AF_INET-----网络地址类型,SOCK_DGRAM--...每一个进程都要有自己的structaddr结构体,存储自己的IP地址和ip地址类型,和struct file 一致 ---------------建立之后要把该结构体和socket的fd描述符使用bind

    35610

    网络编程 - Linux Socket编程

    Linux Socket编程 ---- 目录 前言 Socket的功能 Socket基础 Socket类型 基本结构 基本转换函数 基本Socket使用 TCP Socket实例 UDP Socket实例...本篇不涉及太底层的网络原理,仅说明socket的基本使用方法。主要参考《Linux网络编程》。本篇源码获取方式见文底小字。...Socket基础 Socket类型   套接字有三种类型:流式套接字(SOCK_STREAM),数据报套接字(SOCK_DGRAM)和原始套接字。...注:inet_ntoa()返回一个字符指针,它指向一个定义在函数 inet_ntoa() 中的 static 类型字符串。...基本Socket使用   Linux同时支持面向连接和不连接类型的套接字。在面向连接的通讯中服务器和客户机在交换数据之前先要建立一个连接;在不连接通讯中数据被作为信息的一部分被交换。

    11K50
    领券