问题描述
有一个java服务器LocalServerSocket监听一个抽象的unix域套接字,名为'myaudsocket',如:
public void listen() {
String name = "myaudsocket";
mSocket = new LocalServerSocket(name);
LocalSocket client = mSocket.accept();
...
}
我可以通过下面的Java代码连接服务器:
public void connect() {
String name = "myaudsocket";
LocalSocket client = new LocalSocket();
client.connect(new LocalSocketAddress(name));
Log.d("client","connected to " + name);
}
但是如果我无法通过本机代码连接到服务器:
#define SOKET_NAME "@myaudsocket"
void connect() {
char* name = SOKET_NAME;
struct sockaddr_un addr;
int sock = socket(AF_UNIX,SOCK_STREAM,0);
if (sock < 0) {
perror("Failed to create socket");
return -1;
}
memset(&addr,sizeof(addr));
addr.sun_family = AF_UNIX;
strncpy(addr.sun_path,SOKET_NAME,sizeof(addr.sun_path)-1);
if (name[0] == '@')
addr.sun_path[0] = '\0';
if (connect(sock,(struct sockaddr *)&addr,sizeof(addr)) < 0) {
perror("Failed to connect");
close(sock);
return -1;
}
...
}
控制台总是说:“无法连接:连接被拒绝”。但是上面的原生代码可以在一般的Linux OS(比如Ubuntu)上运行。
我该如何解决?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)