<span style="color: #0000ff">#define MAXLINE 80
<span style="color: #0000ff">char client_path = <span style="color: #800000">"<span style="color: #800000">client.socket<span style="color: #800000">"<span style="color: #000000">;
<span style="color: #0000ff">char server_path = <span style="color: #800000">"<span style="color: #800000">server.socket<span style="color: #800000">"<span style="color: #000000">;
<span style="color: #0000ff">int<span style="color: #000000"> main() {
<span style="color: #0000ff">struct<span style="color: #000000"> sockaddr_un cliun,serun;
<span style="color: #0000ff">int<span style="color: #000000"> len;
<span style="color: #0000ff">char buf[<span style="color: #800080">100<span style="color: #000000">];
<span style="color: #0000ff">int<span style="color: #000000"> sockfd,n;
</span><span style="color: #0000ff">if</span> ((sockfd = socket(AF_UNIX,<span style="color: #800080">0</span>)) < <span style="color: #800080">0</span><span style="color: #000000">){
perror(</span><span style="color: #800000">"</span><span style="color: #800000">client socket error</span><span style="color: #800000">"</span><span style="color: #000000">);
exit(</span><span style="color: #800080">1</span><span style="color: #000000">);
}
</span><span style="color: #008000">//</span><span style="color: #008000"> 一般显式调用bind函数,以便服务器区分不同客户端 </span>
memset(&cliun,<span style="color: #0000ff">sizeof</span><span style="color: #000000">(cliun));
cliun.sun_family </span>=<span style="color: #000000"> AF_UNIX;
strcpy(cliun.sun_path,client_path);
len </span>= offsetof(<span style="color: #0000ff">struct</span> sockaddr_un,sun_path) +<span style="color: #000000"> strlen(cliun.sun_path);
unlink(cliun.sun_path);
</span><span style="color: #0000ff">if</span> (bind(sockfd,len) < <span style="color: #800080">0</span><span style="color: #000000">) {
perror(</span><span style="color: #800000">"</span><span style="color: #800000">bind error</span><span style="color: #800000">"</span><span style="color: #000000">);
exit(</span><span style="color: #800080">1</span><span style="color: #000000">);
}
memset(</span>&serun,server_path);
len </span>= offsetof(<span style="color: #0000ff">struct</span> sockaddr_un,sun_path) +<span style="color: #000000"> strlen(serun.sun_path);
</span><span style="color: #0000ff">if</span> (connect(sockfd,len) < <span style="color: #800080">0</span><span style="color: #000000">){
perror(</span><span style="color: #800000">"</span><span style="color: #800000">connect error</span><span style="color: #800000">"</span><span style="color: #000000">);
exit(</span><span style="color: #800080">1</span><span style="color: #000000">);
}
</span><span style="color: #0000ff">while</span>(fgets(buf,MAXLINE,stdin) !=<span style="color: #000000"> NULL) {
write(sockfd,strlen(buf));
n </span>=<span style="color: #000000"> read(sockfd,MAXLINE);
</span><span style="color: #0000ff">if</span> ( n < <span style="color: #800080">0</span><span style="color: #000000"> ) {
printf(</span><span style="color: #800000">"</span><span style="color: #800000">the other side has been closed.n</span><span style="color: #800000">"</span><span style="color: #000000">);
}</span><span style="color: #0000ff">else</span><span style="color: #000000"> {
write(STDOUT_FILENO,n);
}
}
close(sockfd);
</span><span style="color: #0000ff">return</span> <span style="color: #800080">0</span><span style="color: #000000">;
}
$ server.c - client.c -o client


(编辑:瑞安网)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!