- 论坛徽章:
- 0
|
写全就没有错误了啊!原因我也没懂,不过是正确的!
#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/un.h>
#include <sys/ipc.h>
#include <sys/wait.h>
#define NAME "my_socket"
int main(void){
int orig_sock,
new_sock,
clnt_len,
i;
static struct sockaddr_un clnt_adr,
serv_adr;
static char buf[10];
void clean_up(int ,char *);
if((orig_sock=socket(AF_UNIX,SOCK_STREAM,0))<0){
perror("generate error\n");
exit(1);
}
serv_adr.sun_family=AF_UNIX;
strcpy(serv_adr.sun_path,NAME);
unlink(NAME);
if(bind(orig_sock,(struct sockaddr*)&serv_adr,sizeof(serv_adr.sun_family)+strlen(serv_adr.sun_path))<0){
perror("bind error");
exit(2);
}
listen(orig_sock,1);
clnt_len=sizeof(clnt_adr);
if((new_sock=accept(orig_sock,(struct sockaddr*)&clnt_adr,&clnt_len))<0){
perror("accept error!\n");
exit(3);
}
for(i=0;i<=10;i++){
sleep(1);
read(new_sock,buf,sizeof(buf));
printf("s_>%s",buf);
}
close(new_sock);
clean_up(orig_sock,NAME);
exit(0);
}
void clean_up(int sd,char *the_file){
close(sd);
unlink(the_file);
} |
|