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

【Linux】: Socket 编程

(插口,插座) ,实现了客户端和服务器的唯二进程进行通信 例如:10086 是一个 IP,工号 12345 的员工就是 port 端口号 进程 ID 属于系统概念,技术上也具有唯一性,确实可以用来标识唯一的一个进程...先发出的数据是低地址,后发出的数据是高地址 网络字节序与主机字节序之间的转换 为使网络程序具有可移植性,使同样的 C 代码在大端和小端计算机上编译后都能正常运行,系统提供了四个函数,可以通过调用以下库函数实现网络字节序和主机字节序之间的转换...Socket 编程 6.1 socket 常见API Socket API 是一层网络编程接口,抽象了底层的网络协议,定义在 netinet/in.h 中。...通过 Socket API,程序可以实现跨网络的进程间通信(如通过IP地址和端口号进行的网络通信),也可以实现本地的进程间通信。...总的来说 通过 sockaddr 结构体,Socket API 实现了网络通信和本地通信的统一接口 它的设计理念类似于“多态”,即通过一个通用的接口来处理多种类型的地址格式 7.

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

    【Linux】:Socket编程 TCP

    tsvr->InitServer(); tsvr->start(); return 0; } 导入我们之前的 Log.hpp、Common.hpp、Mutex.hpp,然后对我们之前实现的...Common.hpp 也要做一下修改 2.2 listen & accept 函数 在写具体实现代码之前,我们先来了解一些相关知识 listen listen 函数是网络编程中的一个重要函数,通常用于将套接字...函数原型(C/C++) 在 POSIX 系统(如 Linux)中,listen 函数的原型如下: int listen(int sockfd, int backlog); 在 Windows 系统中,listen...2.4 HandlerRequest 这里网站一直在转,是因为我们还没有实现其对应的操作,在 TcpServer.cc 操作如下: 函数实现 void HandlerRequest(int sockfd...EchoServer -- 线程池 引入我们之前写的【Linux】:线程库 Thread.hpp 简单封装 Thread.hpp 以及 单例模式下的【Linux】:日志策略 + 线程池(单例模式 Threadpool.hpp

    1.5K10

    【Linux】Socket编程—UDP

    ChatServer   对于聊天室的实现,我们需要对聊天对象进行管理,所以需要新建一个类usermanager以及描述聊天对象的类user: #pragma once #include > _online_user; Mutex _mutex; }; }; 对于描述对象参数我们可以使用之前实现的...InetAddr类,对于对象的管理方法主要有添加对象、删除对象以及路由转发(群发)这三个部分;因为后续有多个线程而它们内部实现需要访问公共资源,所以需要加锁保护。   ...} } _isrunning = false; } 服务器不再是简单的接收信息,还需要对接收的消息进行处理;因为转发任务消耗的时间可能较长,我们可以利用之前实现的线程池来处理多个转发任务...socket socket // client必须也要有自己的ip和端口!但是客户端,不需要自己显示的调用bind!!

    1.8K00

    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.../ 客户端的填充IP方式     bind函数需要将sin_port和sin_addr转换成为网络字节有限顺序,而sin_addr则无需转换     internet上数据以高位优先 顺序传输,故需要实现进行转换...收到连接请求时,socket执行体将建立一个新的socket,执行体将这个新socket和请求连接进程的地址联系起来,收到服务请求的初始socket仍能够继续在以前的 socket上监听,同时能够在新的

    4.9K70

    Linux Socket 收发Json

    如果对你有帮助,麻烦点个在看或点个赞,感谢~ 不管是Qt开发还是linux 嵌入式应用开发,一个人的核心竞争力还是不断思考,也就是不断琢磨。...下面的程序主要是Linux C Socket 读取JSON文件并传输,然后再写入文件,其中使用了cJSON库,关于cJSON库不过多介绍,主要介绍整体的思路。 1....,将socket通信独立出来,JSON解析、写文件、响应客户端JSON数据等分别写成函数。...writeFileRet); int SocketServer_Init(const char *ip, int port); int RecDataFromClient(int serverFd); 一些具体实现...小结 编译JSON时需要链接linux的数学库 自己琢磨如何拆解函数功能 应用程序也主要是调用别人的api,那么你的核心竞争力是什么呢 ? 如需程序工程可在公众号后台留言。

    5.6K20

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

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

    4.6K20

    linux udp编程_linux中socket编程

    在前面的文件中,我们介绍了linux网络编程中与IP相关的知识和常用的函数总结,本文针对具体的UDP通信,来详细的介绍UDP通信的使用,包括UDP通信中的点对点通信,多播,广播等。...3.2、组播的使用 组播在基本UDP编程框架的基础上,使用setsockopt()函数和getsockopt()函数来实现,需要设置IP层的相关参数(第二个参数为 IPPROTO_IP),其原型如下:...(int)); if (ret < 0) { perror("socket set SO_REUSEADDR failed"); } 2、服务端程序,在创建完socket后,有一个bind的操作...但是在选择绑定的IP地址时,一般我们会选择INADDR_ANY,这样不会有什么问题,单播和组播数据都能正常的收到,但是如果我们这边指定了一个固定的IP地址,就只能收到这个IP地址的数据了,如果同样需要实现单播...,组播等功能,就需要创建多个socket来实现。

    13.1K10

    【Linux】用C++实现UDP通信:详解socket编程流程

    常见协议分类 类别 协议示例 作用 网络通信 TCP/IP、HTTP、FTP 实现数据传输和网络互联 安全协议 SSL/TLS、SSH、HTTPS 加密通信和身份验证 应用层协议 SMTP(邮件)、DNS...不可靠传输 不保证数据顺序、不重传丢失报文、不检测拥塞 无状态 发送方和接收方不维护连接状态 头部开销小 固定8字节头部(TCP至少20字节) 支持广播/多播 可向多个主机同时发送数据 UDP协议实现通信...socket error" << std::endl; Die(SOCKET_ERR); } // 1.1 填充server信息 struct sockaddr_in...[n] = 0; std::cout << buffer <<std::endl; } } return 0; } 总结 至此,我们用C++完整实现了一个基于...UDP的通信流程,从创建 socket、绑定地址,到收发数据、关闭连接,每一步都围绕 Linux 下的 socket 编程核心展开。

    70010

    【Linux网络#2】: Socket 编程

    个人主页:island1314 个人专栏:Linux—登神长阶 1....(插口,插座) ,实现了客户端和服务器的唯二进程进行通信 例如:10086 是一个 IP,工号 12345 的员工就是 port 端口号 进程 ID 属于系统概念,技术上也具有唯一性,确实可以用来标识唯一的一个进程...先发出的数据是低地址,后发出的数据是高地址 网络字节序与主机字节序之间的转换 为使网络程序具有可移植性,使同样的 C 代码在大端和小端计算机上编译后都能正常运行,系统提供了四个函数,可以通过调用以下库函数实现网络字节序和主机字节序之间的转换...通过 Socket API,程序可以实现跨网络的进程间通信(如通过IP地址和端口号进行的网络通信),也可以实现本地的进程间通信。...总的来说 通过 sockaddr 结构体,Socket API 实现了网络通信和本地通信的统一接口 它的设计理念类似于“多态”,即通过一个通用的接口来处理多种类型的地址格式 7.

    35810

    【Linux】socket网络编程基础

    当我们以这个视角看待网络通信的时候,那么网络通信的过程也就成了一种介质,类似于管道或者共享内存一样的通信信道 六、全面认识网络通信 在 TCP/IP 四层模型中,每一层都包含了多种不同的协议,这些协议各自承担着不同的功能,共同协作以实现网络通信...编程基础 1、调用接口 (一)创建描述符 #include socket.h> int socket(int domain, int type, int protocol); 返回值:成功返回套接字描述符...IPv6网络协议 AF_UNIX 或 AF_LOCAL 用于本地通信,可在同一台机器的不同进程间进行高效数据传输 type:指定套接字类型 套接字类型 意义 SOCK_STREAM 流式套接字,基于TCP实现...SOCK_DGRAM 数据报套接字,基于UDP实现 SOCK_RAW 原始套接字,允许程序直接访问底层网络协议 protocol:指定了使用的具体协议,通常将其设为 0,这样系统会根据 domain...和 type 自动选择合适的协议 (二)绑定端口号 #include socket.h> int bind(int sockfd, const struct sockaddr *addr,

    44010

    深入剖析Socket实现

    其实如果不理解套接字的具体实现所关联的数据结构和底层协议的工作细节,就很难抓住网络编程的精妙之处,对于TCP套接字(即Socket的实例)来说更是如此。...图1是一个Socket实例所关联的一些信息的简化视图。JVM或其运行的平台(即,主机操作系统中的“套接字层”)为这些类的支持提供了底层实现。Java对象上的操作则转换成了这种底层抽象上的操作。...在这里,“Socket”指的是图1中的类之一,而“套接字(socket)”指的是底层抽象,这种抽象是有操作系统提供或由JVM自己实现(例如在嵌入式系统中)。...图1        在此,“套接字结构”是指底层实现(包括JVM和TCP/IP,但通常是后者)的数据结构集,这些数据结构包括了特定Socket实例所关联的信息。...一些多用途操作系统为用户提供了获取底层数据结构“快照”的工具,netstat是其中之一,太在UNIX(Linux)和Windows平台上都可用。

    94920
    领券