UNIX域协议并不是一个真正的协议族,它是用在同一台主机上进行客户服务器通信时,能够使用和不同主机上通信相同的API的一种方法。所以它只是用在同一台主机上2个进程间的通信,当然同一主机上2个进程通信的方式在unix下面有:信号,管道,共享内存。
unix域地址结构
struct sockaddr_un{
uint8_t sun_len;
sa_family_t sun_family;
char sun_path[104];
//与网络通信不同,网络中双方确认需要IP和端口号,而在同一台机器上的2个进程则不需要这么麻烦,如果写过管道通信的例子,则这里类似于管道,需要定义是一个用于通信的文件(不能是系统中已有的文件)
};
样例:
服务器
#include "/programe/net/head.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "sys/select.h"
#include "sys/un.h" //定义了unix域的头文件
int main(int argc, char ** argv) {
int sockfd;
socklen_t len;
struct sockaddr_un addr;
sockfd = socket(AF_LOCAL, SOCK_STREAM, 0);
//第一个参数为AF_LOCAL表示使用unix域协议,如果是SOCK_STREAM则后面相当类似于TCP,如果是DGRAM则类似于UDP协议
bzero(&addr, sizeof(struct sockaddr_un));
addr.sun_family = AF_LOCAL;
strncpy(addr.sun_path, argv[1], sizeof(addr.sun_path) - 1);
//之前数据结构出有说明,这里是将输入参数的文件拷贝如addr.sun_path
int flag = bind(sockfd, (struct sockaddr *)&addr, SUN_LEN(&addr));
if(flag == -1) {
printf("bind socket error\n");
exit(1);
}
listen(sockfd, 10);
int connfd = accept(sockfd, NULL, NULL);
char buf[101];
int n = read(connfd, buf, 100);
buf[n] = '\0';
printf("get message:%s\n", buf);
close(connfd);
close(sockfd);
}
客户端
#include "/programe/net/head.h"
#include "stdio.h"
#include "stdlib.h"
#include "string.h"
#include "sys/select.h"
#include "sys/un.h"
int main(int argc, char ** argv) {
int sockfd;
socklen_t len;
struct sockaddr_un addr;
sockfd = socket(AF_LOCAL, SOCK_STREAM, 0);
bzero(&addr, sizeof(struct sockaddr_un));
addr.sun_family = AF_LOCAL;
strncpy(addr.sun_path, argv[1], sizeof(addr.sun_path) - 1);
connect(sockfd, (struct sockaddr *)&addr, sizeof(struct sockaddr_un));
char buf[] = "hello world";
write(sockfd, buf, sizeof(buf));
close(sockfd);
exit(0);
}
与TCP运行不同,服务器和客户运行指令如下
server /programe/net/mytemp.tmp
client /programe/net/mytemp.tmp
很像管道通信,2个文件必须一致(一至才能互相通信),并且文件不会被删除。
分享到:
相关推荐
第一部分 TCP事务协议 第1章 T/TCP概述 第2章 T/TCP协议 第3章 T/TCP使用举例 …… 第二部分 TCP的其他应用 ...第18章 Unix域协议:I/O和描述符的传递 附录A 测量网络时间 附录B 编写T/TCP应用程序 参考文献
TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域...
TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议./TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议./TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和UNIX域协议./TCP-IP详解卷三:TCP事务协议,HTTP,NNTP和...
《TCP/IP详解(卷3):TCP事务协议、HTTP、NNTP和UNIX域协议》同样采用了大量的实例和实现细节,并参考引用了卷2中的大量源程序。《TCP/IP详解(卷3):TCP事务协议、HTTP、NNTP和UNIX域协议》适用于希望理解TCP/IP如何...
TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议.rar,第三步。
TCPIP详解卷卷三:TCP事务协议HTTPNNTP和UNIX域协议pdfTCPIP详解卷卷三:TCP事务协议HTTPNNTP和UNIX域协议pdf
第三卷的内容细节覆盖了当今TCP/IP编程人员和网络管理员必须熟练掌握... UNIX域协议,这是在UNIX实现中应用非常广泛的一套协议。 与前面两卷一样,本书有丰富的例子和实现的细节,他们都是4.4BSD-Lite中的网络代码。
Unix域协议:实现 17.1 概述 180 17.2 代码介绍 180 17.3 Unix domain和protosw结构 181 17.4 Unix域插口地址结构 182 17.5 Unix域协议控制块 183 17.6 uipc_usrreq函数 185 17.7 PRU_ATTACH请求和unp_attach函数 ...
第一部分TCP事务协议 PDF完美版,目录大纲可跳转 第1章T/TCP 概述 1.1 概述 本章首先介绍客户-服务器事务概念。我们从使用U D P的客户-服务器应用开始,这是最 简单的情形。接着我们编写使用T C P的客户和服务器...
UNIX域协议,这些协议提供了进程之间通信的一种手段。当客户与服务器进程在同一台主机上时,UNIX域协议通常要比TCP/IP快一倍。《TCP/IP详解·卷3:TCP事务协议、HTTP、NNTP和UNIX域协议》同样采用了大量的实例和实现...
TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议
tcp-ip详解卷1:协议.TCP-IP详解卷2:TCP-IP详解卷3:TCP事务协议,HTTP,NNTP和UNIX域协议
内容非常清晰 PDF格式 第三卷的内容细节覆盖了当今TCP/IP编程人员和... UNIX域协议,这是在UNIX实现中应用非常广泛的一套协议。 与前面两卷一样,本书有丰富的例子和实现的细节,他们都是4.4BSD-Lite中的网络代码。
TCP-IP详解卷3 -- tcp事务协议,http,nntp和unix域协议.pdf
完整的电子书,不像其他的资源分成了很多pdf。 哥我辛苦的把它们合成到了一起,然后添加了书签,累就一个字。
TCP-IP详解 卷3:TCP事务协议,HTTP,NNTP和UNIX域协议 完整 TCP-IP详解 卷3:TCP事务协议,HTTP,NNTP和UNIX域协议 完整
《TCP-IP详解卷三TCP事务协议,HTTP,NNTP和UNIX域协议》是“TCP/IP详解系列”的延续。主要内容包括:TCP事务协议,即T/TCP,这是对TCP的扩展,使客户-服务器事务更快、更高效和更可靠