仅供参考:

服务端:socket->bind->listen->send/recv->close
客户端:socket->bind->connect->send/recv->close
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <errno.h>
#include <fcntl.h>
#include <sys/un.h>
#include <pthread.h>
#include <cstring>
#include <cstdio>
#include <unistd.h>
#include <signal.h>
#define filename "test.socket"
void setnonblocking(int fd)
{
fcntl(fd, F_SETFL, fcntl(fd, F_GETFL) | O_NONBLOCK);
}
void *client_func(void *arg)
{
sleep(3);
int fd = socket(AF_UNIX, SOCK_STREAM, 0);
setnonblocking(fd);
sockaddr_un un;
memset(&un, 0, sizeof(un));
un.sun_family = AF_UNIX;
sprintf(un.sun_path, "file_%d.socket", (int)getpid());
unlink(un.sun_path);
socklen_t len = sizeof(un);
bind(fd, (sockaddr *)&un, sizeof(un));
strcpy(un.sun_path, filename);
int ret = connect(fd, (sockaddr *)&un, len);
if (ret == -1)
{
printf("connect server failed...\n");
close(fd);
return NULL;
}
char buf[256];
memset(buf, 0, sizeof(buf));
strcpy(buf, "hello world");
int n = send(fd, buf, strlen(buf)+1, 0);
printf("send data, %d bytes..\n", n);
sleep(5);
close(fd);
return NULL;
}
int main()
{
unlink(filename);
signal(SIGPIPE, SIG_IGN);
int fd = socket(AF_UNIX, SOCK_STREAM, 0);
int yes = 1;
setsockopt(fd, SOL_SOCKET, SO_REUSEADDR, &yes, sizeof(yes));
setnonblocking(fd);
sockaddr_un un;
memset(&un, 0, sizeof(un));
un.sun_family = AF_UNIX;
strcpy(un.sun_path, filename);
bind(fd, (sockaddr *)&un, sizeof(un));
listen(fd, 100);
pthread_t pid;
pthread_create(&pid, NULL, client_func, NULL);
sockaddr_un uu;
socklen_t len = sizeof(uu);
while (true)
{
memset(&uu, 0, len);
int newfd = accept(fd, (sockaddr *)&uu, &len);
if (newfd != -1)
{
setnonblocking(newfd);
printf("newfd = %d, path = %s\n", newfd, uu.sun_path);
char buf[512];
memset(buf, 0, sizeof(buf));
int n = recv(newfd, buf, 512,0);
printf("recv %d bytes, contents is %s\n", n, buf);
}
usleep(100000);
}
close(fd);
return 0;
}
以上就是小编为大家带来的socket unix domain IPC的实例代码全部内容了,希望大家多多支持~
# socket
# unix
# domain
# IPC
# 小编
# 服务端
# 大家多多
# 客户端
# 仅供参考
# signal
# unistd
# define
# filename
# arpa
# cstdio
# pthread
# fcntl
# cstring
# inet
# errno
# client_func
# O_NONBLOCK
# F_GETFL
# AF_UNIX
相关文章:
哪家制作企业网站好,开办像阿里巴巴那样的网络公司和网站要怎么做?
如何通过虚拟主机空间快速建站?
C++如何使用std::optional?(处理可选值)
如何在七牛云存储上搭建网站并设置自定义域名?
孙琪峥织梦建站教程如何优化数据库安全?
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Swift开发中switch语句值绑定模式
导航网站建站方案与优化指南:一站式高效搭建技巧解析
网站按钮制作软件,如何实现网页中按钮的自动点击?
黑客如何通过漏洞一步步攻陷网站服务器?
建站之星CMS建站配置指南:模板选择与SEO优化技巧
内部网站制作流程,如何建立公司内部网站?
如何快速生成可下载的建站源码工具?
建站之星如何快速生成多端适配网站?
如何通过虚拟主机快速搭建个人网站?
免费制作统计图的网站有哪些,如何看待现如今年轻人买房难的情况?
高性能网站服务器配置指南:安全稳定与高效建站核心方案
北京网站制作的公司有哪些,北京白云观官方网站?
微信h5制作网站有哪些,免费微信H5页面制作工具?
简易网站制作视频教程,使用记事本编写一个简单的网页html文件?
在线ppt制作网站有哪些软件,如何把网页的内容做成ppt?
如何在IIS中新建站点并配置端口与物理路径?
建站主机如何选?性能与价格怎样平衡?
专业的网站制作设计是什么,如何制作一个企业网站,建设网站的基本步骤有哪些?
深圳网站制作培训,深圳哪些招聘网站比较好?
全景视频制作网站有哪些,全景图怎么做成网页?
建站之星如何保障用户数据免受黑客入侵?
已有域名能否直接搭建网站?
做企业网站制作流程,企业网站制作基本流程有哪些?
头像制作网站在线制作软件,dw网页背景图像怎么设置?
建站之星备案是否影响网站上线时间?
如何在Golang中引入测试模块_Golang测试包导入与使用实践
制作表格网站有哪些,线上表格怎么弄?
专业制作网站的公司哪家好,建立一个公司网站的费用.有哪些部分,分别要多少钱?
如何快速搭建高效WAP手机网站?
网站制作免费,什么网站能看正片电影?
外贸公司网站制作,外贸网站建设一般有哪些步骤?
如何在香港免费服务器上快速搭建网站?
定制建站流程解析:需求评估与SEO优化功能开发指南
大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?
宝塔建站无法访问?如何排查配置与端口问题?
SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?
如何打造高效商业网站?建站目的决定转化率
如何快速选择适合个人网站的云服务器配置?
c++ stringstream用法详解_c++字符串与数字转换利器
广州建站公司哪家好?十大优质服务商推荐
自助网站制作软件,个人如何自助建网站?
北京网站制作费用多少,建立一个公司网站的费用.有哪些部分,分别要多少钱?
建站主机是否属于云主机类型?
北京制作网站的公司,北京铁路集团官方网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。