本地socket使用AF_UNIX
int socket(int domain, int type, int protocol);
domain参数代表地址族,我们最常用的是TCP/IP协议通信中使用的是AF_INET,在有些情况下建立的socket仅限于同一台设备上进程间的通信,此时可以使用AF_UNIX或者AF_LOCAL,可以是面向连接的(类型 SOCK_STREAM),也可以是无连接的(类型 SOCK_DGRAM)。两种类型都很可靠,原因是没有连接两个进程的外部通信函数。
下面举一个本地socket Server端的例子:
int sockfd = -;
struct sockaddr_un addr; sockfd = socket(AF_UNIX, SOCK_DGRAM, );
addr.sun_family = AF_UNIX;
strcpy(addr.sun_path, "/etc/local/local.sock");
bind(sockfd, (struct sockaddr *)&addr, sizeof(struct sockaddr_un));
这里对某些语句不成功的处理省略,需要注意的是当套接字程序调用bind() 函数时,会在文件系统目录中创建一项。如果路径名已存在,则bind()失败。因此,UNIX域套接字程序应总是调用unlink()函数以在结束时除去该目录项。
UNIX在建立socket后直接connect到文件路径(tcp)或者直接sendto数据到addr(udp)即可。
顺便提一下,使用sockaddr_un时需要包含头文件sys/un.h,否则会出现storage size of 'addr' isn't known
本地socket使用AF_UNIX的更多相关文章
- 本地通信实例(AF_UNIX) (转载)
转自:http://www.groad.net/bbs/thread-1709-1-1.html 程序说明: 程序里包含服务端和客户端两个程序,它们之间使用 AF_UNIX 实现本机数据流通信.使用 ...
- 本地套接字-本地socket
本地套接字简单应用场景 一 #服务端--简单 import socket import os a='sock_file' if os.path.exists(a): os.remove(a) s=so ...
- android的NDK和java进行本地socket通信
关于Android应用与Framework的socket通信,相信关心这个问题的朋友们已经看过<android使用socket使底层和framework通信>这篇文章,美中不足的是作者只贴 ...
- Android native进程间通信实例-socket本地通信篇之——基本通信功能
导读: 网上看了很多篇有关socket本地通信的示例,很多都是调通服务端和客户端通信功能后就没有下文了,不太实用,真正开发中遇到的问题以及程序稳定性部分没有涉及,代码健壮性不够,本系列(socket本 ...
- 网络编程学习笔记:linux下的socket编程
socket是进程通信的一种方式,通过调用一些API可以实现进程间通信,建立连接以及收发信息的过程如下图所示: 这些函数的用法如下: 1.int socket(int protocolFamily, ...
- python之socket
一.初识socket socket 是网络连接端点,每个socket都被绑定到一个特定的IP地址和端口.IP地址是一个由4个数组成的序列,这4个数均是范围 0~255中的值(例如, ...
- Linux IPC socket编程基础
头文件 #include<unistd.h> #include <sys/types.h> #include <sys/socket.h> #include< ...
- socket 基础知识
PHP使用Berkley的socket库来创建它的连接.socket只不过是一个数据结构.你使用这个socket数据结构去开始一个客户端和服务器之间的会话.这个服务器是一直在监听准备产生一个新的会话. ...
- php Socket基础
◆ Socket 基础PHP使用Berkley的socket库来创建它的连接.socket只不过是一个数据结构.你使用这个socket数据结构去开始一个客户端和服务器之间的会话.这个服务器是一直在监听 ...
随机推荐
- Solving “Dynamic Web Module 3.0 requires Java 1.6 or newer” in Maven Projects
不一定是在Maven Projects里才有这种情况,但解决方法是一样的. 转自:http://qussay.com/2013/09/13/solving-dynamic-web-module-3-0 ...
- linux+php+apache web调用python脚本权限问题
lamp : linux + apache + mysql + php 在近期项目中使用 linux + apache + php调用python脚本是出现以下权限问题: build/bdist.li ...
- 【网络编程/C++】修改本机ip地址
昨天学会了编程实现获取本地网卡信息,今天再接再砺学会了修改本机ip地址.其实原理很简单就是用c++调用一下dos命令而已,不得不说,dos命令实在是太强大了,当然听说还有种修改注册表的方法,不过没有试 ...
- 使用web图标
http://www.lovelucy.info/demo/twitter-bootstrap-custom-icons/
- tomcat运行时候出现java.net.BindException: Address already in use: JVM_Bind错误解决方法
问题原因:我们在运行tomcat时候一般用8080端口,但是当端口被占用的时候便不能正常使用tomcat并且会造成上述的错误.而端口被占用的原因有很多,这次的原因是因为装好tomcat以后已经启动了一 ...
- 机器学习--Classifier comparison
最近在学习机器学习,学习和积累和一些关于机器学习的算法,今天介绍一种机器学习里面各种分类算法的比较 #!/usr/bin/python # -*- coding: utf-8 -*- "&q ...
- C#Matlab混合编程类 初始化问题解决方法
************** 异常文本 ************** System.TypeInitializationException: “myPlus.matClass”的类型初始值设定项引发异 ...
- 设置centos7语言显示环境
1.查看可选语言显示包 locale -a ............(省略好多) zh_CNzh_CN.gb18030zh_CN.gb2312zh_CN.gbkzh_CN.utf8zh_HKzh_HK ...
- 【Python全栈笔记】05 [模块二] 19 Oct 文件的操作
文件操作 一般步骤1. 文件打开 2. 文件操作 3. 文件关闭 1. 打开文件 使用open(文件名(绝对路径), 打开模式, 编码) 文件打开的模式有: r: 只读模式(默认) w: 只写模式 ...
- iOS之UILabel自适应高度、宽度
下列两条自适应高度和宽度的自定义方法: