时间:2021-05-19
仅供参考:
服务端: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的实例代码全部内容了,希望大家多多支持~
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
所有的socket通讯都是通过socket接口来的,任何family的通讯包括unix域套接都要走的,所以只要截获了socket读写的几个syscall就可以了
本文实例讲述了python使用socket实现的传输demo。分享给大家供大家参考,具体如下:socket传输,客户端代码importsocketdefmain
复制代码代码如下:#!/usr/bin/envpythonimportsockets=socket.socket(socket.AF_PACKET,socket
复制代码代码如下:importsocket#socket通信客户端defclient():mysocket=socket.socket(socket.AF_IN
复制代码代码如下:importsocketdefopen_tcp_socket(remotehost,servicename):s=socket.socket(