小编Spa*_*mer的帖子

Android NDK网络问题:TCP连接失败

我在使用Android NDK时遇到了一些麻烦.

我的项目需要用C编写的软件组件,它们可以通过TCP接收数据,以便在Android OS上执行.

为此,我使用BSD套接字在C中创建了一个简单的服务器和客户端,并且可以通过PC上的连接成功地来回发送消息.现在我已将客户端代码移动到NDK中,无法从模拟器或实际的Android设备连接到我的服务器.NDK编译时没有警告或错误,模拟器/电话在wifi上并且在清单中启用了互联网权限.是什么赋予了?

它只是创建一个套接字,填写主机/端口信息并尝试连接:如果它连接,发送消息,否则返回错误.Android始终为连接返回负值


在Mac/Windows/Linux上编译/执行的客户端代码适用于:

PC客户端代码:

int tcp_socket = socket(AF_INET, SOCK_STREAM,0); 
if(tcp_socket< 0 ) {
    cerr << "Failed to create TCP socket." << endl;
    return 2;
}

sockaddr_in server_tcp_add;
server_tcp_add.sin_family = AF_INET;
server_tcp_add.sin_port = htons(tcp_port); //set via command line: Yes, they are the same for the android
hostent *hostp = gethostbyname(server_host);
memcpy(&server_tcp_add.sin_addr, hostp->h_addr, hostp->h_length); 
socklen_t slen = sizeof(server_tcp_add);

if(connect(tcp_socket,(sockaddr*)&server_tcp_add, slen) <0 ){
    cerr<< "Failed to connect to server with TCP. " << endl;
    close(tcp_socket);
    return 3;
}

char* …
Run Code Online (Sandbox Code Playgroud)

sockets networking android tcp android-ndk

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

android ×1

android-ndk ×1

networking ×1

sockets ×1

tcp ×1