Chinaunix
标题:
求助:linux 进程之间socket通讯的问题
[打印本页]
作者:
suntek-video
时间:
2009-10-15 14:02
标题:
求助:linux 进程之间socket通讯的问题
#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <sys/un.h>
#include <unistd.h>
#include <sys/wait.h>
#define LEN 64
int main()
{
unsigned char data[LEN];
int server_sockfd,client_sockfd;
int server_len,client_len,num;
struct sockaddr_un server_address;
struct sockaddr_un client_address;
unlink("server_socket");
if(server_sockfd = socket(AF_UNIX,SOCK_STREAM,0)<0)
{
printf("creat error\n");
return 1;
}
server_address.sun_family = AF_UNIX;
strcpy(server_address.sun_path,"mysocket");
server_len = sizeof(server_address);
if(bind(server_sockfd,(struct sockaddr*)&server_address,server_len)==-1)
{
printf("bind error\n");
return 1;
}
小弟不明白为什么上面程序运行到bind的时候会出现bind error,请各位帮忙指点一下,谢谢
作者:
c/unix
时间:
2009-10-15 14:48
提示:
作者被禁止或删除 内容自动屏蔽
作者:
suntek-video
时间:
2009-10-15 16:49
那应该怎么写?谢谢
作者:
c/unix
时间:
2009-10-15 16:53
提示:
作者被禁止或删除 内容自动屏蔽
作者:
suntek-video
时间:
2009-10-15 17:53
不行还是一样的,bind失败
作者:
ameihualudeai1
时间:
2009-10-15 19:16
提示是套接字是个文件描述符,不是个套接字描述符,问题期待高人指点!
作者:
ameihualudeai1
时间:
2009-10-15 20:23
写全就没有错误了啊!原因我也没懂,不过是正确的!
#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);
}
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2