unix Domain socket(python)
来源:互联网 发布:监听rpc服务器端口 编辑:程序博客网 时间:2024/04/30 23:07
1. unix Domain Socket 简介
Unix Domain Socket通常称为 【unix域套接口】 或 【本地套接口】,它用于位于同一台机器(操作系统)的进程间通信。它已经被纳入POSIX Operating Systems标准。
它支持以下三种方式数据传输:
(1) 可靠的字节流传输(SOCK_STREAM, 对应TCP);
(2)有序、可靠的数据包传输(SOCK_SEQPACKET);
(3)无序、不可靠的数据包传输(SOCK_DGRAM,对应UDP)。
Unix Domain Socket 的通信基于操作系统内核的,使用文件系统作为地址命名空间(address name space)。
2. 简单的server/client示例(python)
示例分为两部分,server端, client端
2.1 server端代码
import socketimport sys import osserverAddr = 'xunixSocket_ex'def serverSocket(): #create sockert sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) if sock < 0: print >> sys.stderr, 'socket error' # bind to a file if os.path.exists(serverAddr): os.unlink(serverAddr) if sock.bind(serverAddr): print >> sys.stderr, 'socket.bind error' #listen if sock.listen(5): print >> sys.stderr, 'socket.listen error' while True: print >> sys.stderr, 'waiting for connecting' #waiting for client connecting conn, clientAddr = sock.accept() try: # receive data # send data to client while True: data = conn.recv(100) if data: print >> sys.stderr, 'received "%s"' %data conn.sendall(data) else: break finally: #close the connection conn.close() os.unlink(serverAddr)if __name__ == "__main__": serverSocket()
2.2 client端代码
import socketimport sys import osserverAddr = 'xunixSocket_ex'def clientSocket(): sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) if sock < 0: print >> sys.stderr, 'socket error' try: sock.connect(serverAddr) except socket.error, msg: print >> sys.stderr, "exception" print >> sys.stderr, msg sys.exit(1) message = 'this is the message' sock.sendall(message) amountRecv = 0 amountSnd = len(message) while amountRecv < amountSnd: data = sock.recv(100) amountRecv += len(data) print >> sys.stderr, 'received "%s"' %data sock.close()if __name__ == "__main__": clientSocket()
注:
这篇博文只是做个备忘录,后面会用详细介绍unix域套接口(使用C语言写代码示例)。
0 0
- unix Domain socket(python)
- Unix domain socket
- UNIX Domain Socket IPC
- UNIX Domain Socket IPC
- Unix Domain Socket IPc
- UNIX Domain Socket IPC
- UNIX Domain Socket IPC
- unix domain socket
- unix domain socket介绍
- Unix domain socket
- UNIX Domain Socket IPC
- unix domain socket 本质
- UNIX Domain Socket IPC
- unix domain socket介绍
- UNIX Domain Socket IPC
- Unix domain Socket
- UNIX Domain Socket IPC
- UNIX Domain Socket IPC
- MC9S12G128 内部flash与eeprom的读写配置
- Android-SDK-Windows的sdk manager闪退
- iOS runtime机制实现给分类添加属性
- 杭电2501
- iOS 自定义结构体、结构体转换成对象
- unix Domain socket(python)
- MC9S12G中文教学
- c++ virtual的作用
- TCP与UDP区别
- js exploit
- 蓝桥杯 欧拉和鸡蛋
- 安卓问题集锦
- SQL动态行列变换
- 数据库必备