socket unix domain IPC的实例代码


仅供参考:

服务端:socket->bind->listen->send/recv->close

客户端:socket->bind->connect->send/recv->close

?
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091#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的实例代码全部内容了,希望大家多多支持~

服务器安全狗防护日志功能介绍

服务器安全狗的防护日志很重要,用户通过防护日志就可以分析出很多的问题。提醒用户莫忽视防护日志,经常查看防护日志。图1. 日志类型选择当服务器遭受到攻击时,服务器安全狗成功防御攻击之后就会自动生成防护日志,记录包括攻击类型、攻击时间、攻击源IP、攻击源地理信息、...
服务器安全狗服务器安全防护日志

为什么要使用虚拟主机?虚拟主机有什么用?

虚拟主机(Virtual Host Virtual Server)是运用特别的软硬件技能,把一台计算机主机分红一台台'虚拟'的主机,每一台虚拟主机都具有独立的域名和IP地址(或同享的IP地址),具有完好的Internet服务器功能。浅显的说,虚拟主机是将一台(...
虚拟主机

利用 Opera 浏览器中存储的XSS漏洞读取本地文件

Opera 管理着一个漏洞赏金计划,研究人员可以在该计划中报告 Opera 软件中的漏洞并获得奖励。这篇文章就是我发现的一个漏洞——网页可能会从用户那里检索本地文件的屏幕截图。考虑到 Opera 是基于 Chromium 的,我做的第一件事就是下载一个新版本的...
漏洞服务器安全OperaXSS

使用服务器安全狗目录权限优化之后异常问题及解决办法

图1.目录权限优化功能部分用户使用服务器安全狗V3.2的目录权限优化功能,可能遇到异常问题,诸如:图2.错误提示图3.错误提示一般该类型问题与优化“Windows系统文件夹” 与“IIS下的ASP、APSX网站相关的EXE和DLL”两个项目有关。图4.Wind...
服务器安全狗服务器安全异常目录权限