結構體部分介紹
typs.h
# define __std_type typedef
#define __u32_type unsigned int
__std_type __u32_type __socklen_t;
unistd.h
typedef __socklen_t socklen_t;
linux/un.h
#define unix_path_max 108
struct sockaddr_un
示例:
client 部分的**
#include
#include
#include
#include
#include
#include
#include
#include
intmain
(int argc,
char
*ar**)
memset
(&serveraddr,
0x00
,sizeof
(struct sockaddr_un));
serveraddr.sun_family = af_unix;
memcpy
(serveraddr.sun_path, ar**[1]
,strlen
(ar**[1]
));printf
("path: %s\n"
, ar**[1]
);unlink
(ar**[1]
);if(
connect
(clientfd,
(struct sockaddr *
)&serveraddr,
sizeof
(struct sockaddr_un))==
-1)while(1
)printf
("exit\n");
close
(clientfd)
;return0;
}
server部分的**
#include
#include
#include
#include
#include
#include
#include
#include
intmain
(int argc,
char
*ar**)
memset
(&serveraddr,
0x00
,sizeof
(struct sockaddr_un));
serveraddr.sun_family = af_unix;
memcpy
(serveraddr.sun_path, ar**[1]
,strlen
(ar**[1]
));unlink
(ar**[1]
);if(
bind
(serverfd,
(struct sockaddr *
)&serveraddr,
sizeof
(struct sockaddr_un))==
-1)if
(listen
(serverfd,
1024)==
-1)printf
("enter accept\n");
int len =
sizeof
(struct sockaddr_un)
;while(1
)printf
("clientfd = %d, sun_path = %s\n"
, clientfd, clientaddr.sun_path)
;while(1
)sleep(2
);close
(serverfd)
;break;}
printf
("exit\n");
return0;
}
注:
1)服務端accept時的長度要轉為socklen_t ,
否則在會出現accept failed,14, bad address
2)在bind之前要確定檔案不存在,即要執行unlink操作
3)執行命令 :./a.out ./hello.txt
php程序間通訊 yoc PHP程序間通訊
php是用c編寫的,因此它對系統底層api的操作與c很像,同大多數語言一樣,php程序間通訊的方式有以下幾種 訊息佇列,管道,共享記憶體,socket和訊號。本文是對這幾種通訊方式對整理 管道通訊pipe 管道用於承載簡稱之間的通訊資料。為了方便理解,可以將管道比作檔案,程序a將資料寫到管道p中,然...
程序間通訊
實現程序間資料共享除了常用的記憶體檔案對映外,對於一些非檔案的資料共享可以直接使用wm copydata。如果需要在程序a傳遞資料到程序b,簡單的實現如下 在程序a中 cstring strdatatosend t hello 需要傳遞的資料 hwnd hwndreceived 程序b的接收資料視窗...
程序間通訊
最近做專案遇到奇怪的問題,我在主線程中建立乙個工作執行緒。在工作執行緒中用sendmessage向主線程傳送訊息,通知主線程操作office 物件。getactiveobject時提示 hr 0x8001010d 因為應用程式正在傳送乙個輸入同步呼叫,所以無法執行傳出的呼叫。我把sendmessag...