最近练习使用socket进行本地两个进程之间通信时,运行server端时,遇到这个问题,google一番,说是端口已被占用。解决方法就是利用setsockopt设置socket属性:
int opt = 1;
setsockopt(socket_fd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
但是我尝试以后,问题依然存在。
PS:最后该问题被解决掉了,方法如下:
srv_addr.sun_family=AF_UNIX;
strcpy(srv_addr.sun_path,UNIX_DOMAIN);
unlink(UNIX_DOMAIN);
ret=bind(sock,(struct sockaddr*)&srv_addr,sizeof(struct sockaddr_un));
在bind之间,调用unlink函数,参数为socket文件。
至于为什么这样就能解决问题了,我目前还不得而知,待进一步考证以后再贴上来。