如何解决为什么在从 Android 中的本机程序连接到 LocalServerSocket 时连接被拒绝
有一个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 举报,一经查实,本站将立刻删除。