sockaddr_un实例--监听与连接UNIX域socket
来源:互联网 发布:冒险岛2女生捏脸数据 编辑:程序博客网 时间:2024/05/14 04:30
/* 要点:sockaddr_un * 功能:监听UNIX域socket * 成功:返回新生成的套接字文件描述符 * 失败:返回-1 */int std_listen_unix(const char *socketfile){ int fd = 0, len = 0, operate_ret = OPERATE_SUCCESS; struct sockaddr_un serv; if((fd = socket(AF_UNIX, SOCK_STREAM, 0)) < 0) { STD_DEBUG_PRINT("socket failed! %s\n", strerror(errno));operate_ret = OPERATE_FAILED; goto ret_lable; } unlink(socketfile);/***********************/ len = strlen(socketfile); if(len > 107) { DEBUG_PRINT ("socket file len is too long!");operate_ret = OPERATE_FAILED; goto ret_lable; } memset (&serv, 0, sizeof(serv)); serv.sun_family = AF_UNIX; strncpy (serv.sun_path, socketfile, len); len += offsetof(struct sockaddr_un, sun_path); /**********/ if(bind(fd, (struct sockaddr *)&serv, len) < 0) { DEBUG_PRINT ("bind failed!"); operate_ret = OPERATE_FAILED; goto ret_lable; } if(listen(fd, 10) < 0) { DEBUG_PRINT ("listen failed!"); operate_ret = OPERATE_FAILED; goto ret_lable; } return (fd);/************************/ret_lable:if (fd >= 0){close(fd);} return operate_ret;}
/* 要点:sockaddr_un * 功能:连接到UNIX域socket * 成功:返回新生成的套接字文件描述符 * 失败:返回-1 */int std_connect_unix(const s8 *socketfile){ int sock = 0, ret = 0, opt = 0; size_t len = 0; struct sockaddr_un srv_sock; if( (sock = socket(AF_UNIX, SOCK_STREAM, 0)) < 0 ) { DEBUG_PRINT("socket failed!%s\n", strerror(errno)); return OPERATE_FAILED; } len = strlen (socketfile); memset (&srv_sock, 0, sizeof(struct sockaddr_un)); srv_sock.sun_family = AF_UNIX; strncpy (srv_sock.sun_path, socketfile, len); len += offsetof (struct sockaddr_un, sun_path); if((ret = connect(sock, (struct sockaddr *)&srv_sock, len)) < 0 ) { DEBUG_PRINT ("connect failed: %d\n", ret); close (sock); return OPERATE_FAILED; } opt = 1; setsockopt (sock, SOL_SOCKET, SO_KEEPALIVE, &opt, sizeof(opt)); return sock;}
0 0
- sockaddr_un实例--监听与连接UNIX域socket
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un )
- UNIX Domain Socket IPC (sockaddr_un ) --张磊
- unix网络编程之UNIX Domain Socket IPC (sockaddr_un )
- unix域socket通信实例
- 回退单个git 提交记录
- 如何抽象子类属性不一
- hdu 4454 Stealing a Cake(三分法)
- [转]Geeks 面试题:Fibonacci numbers 优化为lgn效率
- 插入排序(Java)
- sockaddr_un实例--监听与连接UNIX域socket
- Oracle 删除用户和表空间
- Visual Basic.NET不同进制数相互转换
- linux文件权限详解
- extjs 数字校园-云资源平台 2014.3.22-住宿管理
- 《统计自然语言处理基础》笔记(1)固定搭配词组/习语 识别方法
- Hibernate 一对多关联的CRUD__@ManyToOne(cascade=(CascadeType.ALL))
- 两个数据库设计实例
- P2P的牌照监管是扯淡的事情