unix域套接字UDP网络编程
unix域套接字UDP网络编程,服务器如下面:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/un.h>#define SA struct sockaddr
#define PATHNAME "/tmp/unixudp"void err_sys(const char *errmsg);int main(void)
{int sockfd;struct sockaddr_un servaddr, cliaddr;char buf[BUFSIZ];ssize_t n;socklen_t len = sizeof(cliaddr);if ((sockfd = socket(AF_LOCAL, SOCK_DGRAM, 0)) == -1)err_sys("socket");bzero(&servaddr, sizeof(servaddr));unlink(PATHNAME);servaddr.sun_family = AF_LOCAL;strncpy(servaddr.sun_path, PATHNAME, sizeof(servaddr.sun_path) - 1);if (bind(sockfd, (SA *)&servaddr, sizeof(servaddr)) == -1)err_sys("bind");for(;;){n = recvfrom(sockfd, buf, sizeof(buf), 0, (SA *)&cliaddr, &len);if (n == -1)err_sys("recvfrom");elseprintf("%s\n", buf);if (sendto(sockfd, buf, n, 0, (SA *)&cliaddr, sizeof(cliaddr)) != n)err_sys("sendto");}exit(0);
}void err_sys(const char *errmsg)
{perror(errmsg);exit(1);
}
client程序:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/un.h>#define SA struct sockaddr
#define PATHNAME "/tmp/unixudp"void err_sys(const char *errmsg);int main(void)
{int sockfd;struct sockaddr_un servaddr, localaddr;char buf[BUFSIZ], s[] = "hello china";ssize_t n;if ((sockfd = socket(AF_LOCAL, SOCK_DGRAM, 0)) == -1)err_sys("socket");bzero(&localaddr, sizeof(localaddr));localaddr.sun_family = AF_LOCAL;strncpy(localaddr.sun_path, tmpnam(NULL), sizeof(localaddr.sun_path) - 1);if (bind(sockfd, (SA *)&localaddr, sizeof(localaddr)) == -1)err_sys("bind");bzero(&servaddr, sizeof(servaddr));servaddr.sun_family = AF_LOCAL;strncpy(servaddr.sun_path, PATHNAME, sizeof(servaddr.sun_path) - 1);for(;;){if (sendto(sockfd, s, strlen(s), 0, (SA *)&servaddr, sizeof(servaddr)) == -1)err_sys("sendto");if ((n = read(sockfd, buf, sizeof(buf))) == -1)err_sys("read");else printf("%s\n", buf);usleep((rand() % 10) * 10000);}exit(0);
}void err_sys(const char *errmsg)
{perror(errmsg);exit(1);
}
版权声明:本文博客原创文章。博客,未经同意,不得转载。
转载于:https://www.cnblogs.com/mengfanrong/p/4603080.html
unix域套接字UDP网络编程相关推荐
- UNIX域套接字编程和socketpair 函数
一.UNIX Domain Socket IPC socket API原本是为网络通讯设计的,但后来在socket的框架上发展出一种IPC机制,就是UNIX Domain Socket.虽然网络soc ...
- 域服务器广播消息,广播,组播和UNIX域套接字
1.广播 1.特点 一对多 仅能使用UDP 2.概念 发送方只有一个接收方则称单播 如果同时发给局域网中的所有主机,成为广播 只有用户数据包(使用UDP协议)套接字才能广播 广播地址 1.以192.1 ...
- 【socket】 unix域套接字(socketpair )通信|socketpair和pipe的区别|进程间通信-Unix domain socket
目录 unix域套接字(socketpair )通信|socketpair和pipe的区别 socketpair机制 描述 原理 socketpair和pipe的区别 进程间通信-Unix domai ...
- <UDP网络编程>——《计算机网络》
目录 1. 网络基础知识 1.1 理解源IP地址和目的IP地址 1.2 认识端口号 1.3 理解 "端口号" 和 "进程ID" 1.3.1 理解源端口号和目的端 ...
- unix 域套接字实现进程间通信
目录 1.认识域套接字 2.unix域套接字相关API及地址结构介绍 (1) 创建unix域套接字 (2) 填充地址结构 sockaddr_un 3.unix域套接字实现进程间通信( ...
- 学习Unix域套接字总结
开门见山,哲学三问!Unix域套接字是什么?为什么会存在Unix域套接字?如何用Unix域套接字? Unix域套接字是什么,为什么会有Unix用于套接字? Linux系统中不同进程进行通信的手段很多, ...
- JAVA UDP网络编程学习笔记
一.UDP网络编程概述 采用TCP协议通信时,客户端的Socket必须先与服务器建立连接,连接建立成功后,服务器端也会持有客户端连接的Socket,客户端的Socket与服务器端的Socket是对应的 ...
- Beats:将 Unix 域套接字中的数据索引到 Elastic Stack
这篇博文将解释什么是 UNIX 域套接字,以及如何将发送到 UNIX 域套接字的索引编入 Elastic Stack - 以及为此存在哪些不同的用例. UNIX 域套接字 - 简短的历史 如果你想让进 ...
- 【Java】UDP网络编程
文章目录 前言 DatagramSocket DatagramPacket 注意事项与区别 代码演示 前言 UDP(user datagram protocol)的中文叫用户数据报协议,属于传输层. ...
- 【技术应用】java基于UNIX域套接字(unix domain socket)连接mysql数据库
前言 Unix domain socket 又叫 IPC(inter-process communication 进程间通信)socket,用于实现同一主机上的进程间通信. socket 原本是为网络 ...
最新文章
- 土豆上的小霉菌引发百万人死亡和逃难,却造就全球7千万后裔
- Redis Cluster 原理你了解不?
- 常见的跑马灯效果,无缝连接。mcake官网公告使用
- Oracle VM VirtualBox上安装windows server2008R2做SharePointServer2010开发(中)
- php 公交 查询系统,php定做单城市公交路线查询系统
- python链表删除尾部节点_python单链表中如何查找和删除节点?
- js string转number_【虚拟机系列】JS虚拟机——实现setTimeout
- mysql where与on 左连接与右连接
- 大数据时代,数据恢复技巧你会了吗?
- 由电梯紧急按钮,谈用户体验
- 学习新浪微博计数服务
- 第三方定量定性检测质谱实验
- 【盘点】2014年跨境进口型电商十大模式
- Reflex WMS中阶系列1 – Reflex WMS系统打印单据,是打印成PDF还是直接从打印机里打印出来?
- 201421410013 唐昭靖 作业1
- 什么是事务?事务的特性?
- 山西大同大学计算机科学与技术在哪个校区,山西大同大学有几个校区及校区地址 哪...
- Jenkins官方社区携手灵雀云成功举办Jenkins Meetup
- cstring头文件
- 软件加密保护技术简介