APUE
文章平均质量分 89
yi只宇
这个作者很懒,什么都没留下…
展开
-
进程间的六种通信方式之socket
对于UDP来说,不需要要维护连接,那么也就没有所谓的发送方和接收方,甚至都不存在客户端和服务端的概念,只要有一个socket多台机器就可以任意通信,因此每一个UDP的socket都需要bind。UDP是没有连接的,所以不需要三次握手,也就不需要像TCP调用listen和connect,但是UDP的交互仍然需要IP地址和端口号,因此也需要bind。所以,监听的socket和真正用来传送数据的socket,是「这里需要注意的是,服务端调用。...原创 2022-07-31 16:14:52 · 7329 阅读 · 1 评论 -
进程间的六种通信方式——管道 命名管道 详解
本篇紧接上篇信号——管道信号(Signal)socket信号量(Semaphore)共享内存(SharedMemory)消息队列(MessageQueue)原创 2022-07-28 21:33:06 · 1587 阅读 · 0 评论 -
进程间的通信——信号篇
而常用的进程间通信(IPC,Inter-Process Communication)的方法有如下六种:信号(Signal )管道(Pipe)- socket信号量(Semaphore)共享内存(Shared Memory)消息队列(Message Queue)这里先什么是信号?信号是一种软件中断,提供了一种处理异步事件的方法,也是进程间通信的唯一一个异步的通信方式。Unix中定义了很多信号,有很多条件可以产生信号,对于这些信号有不同的处理方式。进程间信号是如何通信的?.........原创 2022-07-28 00:05:45 · 1992 阅读 · 0 评论 -
popen()函数详解 具体问题具体分析 popen函数获取不到标准I/O流
先简单的解释一下popen函数吧~popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须由 pclose() 函数关闭,而不是 fclose() 函数。pclose() 函数关闭标准 I/O 流,等待命令执行结束,然后返回 shell 的终止状态。如果 shell 不能被执行,则 pclose() 返回的终止状态与 shell 已执行 exit 一样。type 参数只能是读或者写中的......原创 2022-07-26 15:38:14 · 6407 阅读 · 1 评论 -
TCP数据包发送的过程及实际问题解决 判断socket是否断开 解决socket数据传输数据丢失的问题
先来简单描述一下场景,就是客户端向服务器端每隔一段时间上报数据,就比如说蔬菜大棚上报温湿度等信息给服务器,但是凡事总有意外发生,如果服务器发生故障或网络断开,二者之间建立的连接也随之断开了,那么数据将何去何从,当然是保存到数据库中了,如果write失败就保存到数据库中,待重连成功后再继续发送。这是篇文章是在看了今日头条后,回想起来自己曾今遇到过的一个关于socket套接字发送数据的问题,当时解决后并没有记录下来,现在正好看到了与之息息相关的知识,于是打算简单的谈一下~...原创 2022-07-17 11:03:40 · 1744 阅读 · 0 评论 -
域名解析——gethostbyname()函数及socket客户端域名解析
###gethostbyname()函数说明gethostbyname()——用域名或主机名获取IP地址头文件:#include <netdb.h>#include <sys/socket.h>函数原型:struct hostent *gethostbyname(const char *name);这个函数的传入值是域名或者主机名。返回值是一个hostent的结构体。如果函数调用失败,返回NULL。结构如下:struct hostent{ cha原创 2022-03-26 22:16:52 · 4482 阅读 · 0 评论 -
socket多线程
头文件#include <pthread.h>Compile and link with -pthread.gcc编译的时候一定要加**-lpthread**选项告诉链接器在链接的时候要连接pthread库。1. 关于线程的常用函数及简单说明int pthread_create( pthread_t *restrict tidp, const pthread_attr_t *restrict attr,原创 2022-04-06 20:25:38 · 1282 阅读 · 0 评论 -
socket多进程网络编程逐步解析
1.fork()函数创建子进程头文件#include<unistd.h>#include<sys/types.h>函数原型pid_t fork( void);(pid_t 是一个宏定义,其实质是int,被定义在#includesys/types.h>中)返回值: 若成功调用一次则返回两个值,子进程返回0,父进程返回子进程ID;否则,出错返回-1函数说明一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程。fork函数被调用一次但原创 2022-04-08 17:05:39 · 1966 阅读 · 0 评论 -
select、poll和epoll编写简单高并发服务器
1. select()函数select是一个计算机函数,位于头文件#include <sys/select.h> 。该函数用于监视文件描述符的变化情况——读写或是异常。头文件#include <sys/select.h>//使用select可能会用到的头文件#include <sys/time.h>#include <sys/types.h>#include <unistd.h>函数原型int select (int ma原创 2022-04-16 19:59:31 · 929 阅读 · 0 评论