国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網站 > 建站經驗 > 正文

socket unix domain IPC的實例代碼

2019-11-02 16:47:23
字體:
來源:轉載
供稿:網友

僅供參考:

服務端: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的實例代碼全部內容了,希望大家多多支持腳本之家~

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 叶城县| 临朐县| 新泰市| 齐齐哈尔市| 宽城| 郓城县| 克拉玛依市| 绵阳市| 都安| 疏附县| 石泉县| 姜堰市| 岳西县| 连城县| 财经| 丘北县| 灵川县| 永定县| 宜宾县| 阳信县| 沙湾县| 鲁山县| 琼海市| 石河子市| 喀喇沁旗| 滁州市| 游戏| 汉中市| 武宣县| 兴山县| 监利县| 赤水市| 札达县| 泸州市| 杭锦后旗| 兴仁县| 兴仁县| 彭山县| 西平县| 贡嘎县| 丹江口市|