SOCK_SEQPACKET由于需要维护连接和序列号,性能相对较低,但更可靠。 示例代码 以下是一个简单的示例,展示如何使用SOCK_DGRAM和SOCK_SEQPACKET进行进程间通信。 SOCK_DGRAM示例 发送端代码: 代码语言:txt 复制 #include <sys/socket.h> #include <sys/un.h> #include <stdio.h> #include <string.h> #define...
/* 创建本地socket */ sockFd = socket(AF_UNIX, SOCK_DGRAM, 0);//数据包方式 if ( sockFd <= 0) { perror("socket error"); return sockFd; } /* 绑定监听口 */ int flag = 1; iRet = setsockopt(sockFd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag)); setSocketAttr(sockFd); unlink...
serv_unadr.sun_family = AF_UNIX;strcpy(serv_unadr.sun_path,UNIX_SOCKET_PATH); pSockAddr = (TSockAddr *)&serv_unadr;signal(SIGPIPE, SIG_IGN);/* 创建本地socket */sockFd =socket(AF_UNIX, SOCK_DGRAM,0);//数据包方式if( sockFd <=0) {perror("socket error");returnsockFd; }/* 绑定...
staticintunix_dgram_recvmsg(structsocket *sock,structmsghdr *msg, size_t size,intflags) {structscm_cookie scm;structsock *sk = sock->sk;structunix_sock *u =unix_sk(sk);intnoblock = flags &MSG_DONTWAIT;structsk_buff *skb;interr;intpeeked, skip; err= -EOPNOTSUPP;if(flags&MSG_OOB)got...
/* 创建本地socket */sockFd = socket(AF_UNIX, SOCK_DGRAM, 0);//数据包方式if ( sockFd <= 0){perror("socket error");return sockFd;}/* 绑定监听口 */int flag = 1;iRet = setsockopt(sockFd, SOL_SOCKET, SO_REUSEADDR, &flag, sizeof(flag));setSocketAttr(sockFd);unlink(UNIX_SOCKET_...
intsocket(intdomain,inttype,intprotocol);/* 功能:创建socket对象 domain:通信地址类型 AF_UNIX / AF_LOCAL :本地进程间通信 AF_INET :使用ipv4地址通信 AF_INET6:使用ipv6地址通信 type: SOCK_STREAM :数据流协议,TCP面向连接的通信协议 优点:安全可靠,数据不丢失,但速度慢。
sd = socket(PF_LOCAL, SOCK_DGRAM, 0); if (sd == -1) { perror("socket()"); goto socket_err; } hisend.sun_family = AF_UNIX; snprintf(hisend.sun_path, UNIX_PATH_MAX, "rcv_sock"); ret = connect(sd, (struct sockaddr *)&hisend, sizeof(hisend)); ...
cmsg_level // 这个值表明了原始的协议级别(例如,SOL_SOCKET)。 cmsg_type // 这个值表明了控制信息类型(例如,SCM_RIGHTS)。 } 示例代码如下: 1)接收描述符代码 int my_recv(); int main(int argc, const char *argv[]) { int fd; char buf[32] = {0}; ...
unix domain socket 是在socket架构上发展起来的用于同一台主机的进程间通讯(IPC: Inter-Process Communication),它不需要经过网络协议栈,不需要打包拆包、计算校验和、维护序号和应答等,只是将应用层数据从一个进程拷贝到另一个进程。UNIX Domain Socket有SOCK_DGRAM或SOCK_STREAM两种工作模式,类似于UDP和TCP,但是面向...
1) 我们通过将socket函数的第二个参数指定为SOCK_DGRAM创建一个UDP套接字。像TCP服务器程序一样,用bind的服务器IPV4被指定为INADDR_ANY,并且指定一个总所周知的端口。 2) 通过一个简单的循环,他使用recvfrom读入下一个到达服务器端口的数据报,再使用sendto把他发送给发送者。