服务端:
#include<sys/types.h>
#include<sys/socket.h>
#include<stdio.h>
#include<sys/un.h>
#include<unistd.h>
#include<stdlib.h>
int main(int argc,char *argv[])
{
int server_sockfd,client_sockfd;
int server_len,client_len;
struct sockaddr_un server_address;
struct sockaddr_un client_address;
int i,byte;
char ch_send,ch_recv;
unlink("server_socket");
server_sockfd=socket(AF_UNIX,SOCK_STREAM,0); // AF_INET IPV4域 AF_UNIX UNIX 域 SOCK_STREAM 可靠/双向
//面向链接字节流,0 :系统自动选择 协议
server_address.sun_family=AF_UNIX;
strcpy(server_address.sun_path,"server_socket");//如果是 AF_UNIX域,需要与一个文件进行绑定 //临时文件 //会在当前目录下,生成临时文件 server_socket
server_len=sizeof(server_address);
//绑定 ip 地址和端口
bind(server_sockfd,(struct sockaddr *)&server_address,server_len);
//监听网络,
listen(server_sockfd,5);
printf("is watiing for client connect...\n");
//客户端发起连接
client_len=sizeof(client_address);
client_sockfd=accept(server_sockfd,(struct sockaddr *)&client_address,(socklen_t *)&client_len); //当没有 客户端请求,accept 会阻塞
while(1)
{
if((byte=read(client_sockfd,&ch_recv,1))==-1)
{
perror("read");
exit(EXIT_FAILURE);
}
printf("receive a character from client is : %c \n",ch_recv);
//sleep(1);
// printf("input a charater to send :\n");
ch_send=getchar();
if((byte=write(client_sockfd,&ch_send,1))==-1)
{
perror("write");
exit(EXIT_FAILURE);
}
//printf("");
}
close(client_sockfd);
unlink("server socket");
return 0;
}/**/
客户端:
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <sys/un.h>
#include <stdlib.h>
#include <unistd.h>
int main(int argc,char *argv[])
{
int sockfd;
int len;
struct sockaddr_un address;
int i,byte;
char ch_recv,ch_send;
sockfd=socket(PF_UNIX,SOCK_STREAM,0);
address.sun_family=AF_UNIX;
strcpy(address.sun_path,"server_socket");
len=sizeof(address);
connect(sockfd,(struct sockaddr*)&address,len);
while(1)
{
// printf("intpur a charater to send:\n");
ch_send=getchar();
write(sockfd,&ch_send,1);
byte=read(sockfd,&ch_recv,1);
printf("receiver charater from server is %c:\n\n",ch_recv);
}
close(sockfd);
return 0;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。