您的位置:首页 > 移动开发 > Android开发

android 中使用socket使native和framework通信

2012-06-20 11:18 441 查看
http://blog.csdn.net/liushaogeng/article/details/6641738

待写,问题已解决一直没时间完成此博客;

如有此问题者可留言,同时我会尽快完成此博客,也可暂时参考下贴,但我将提供一个完整程序

1,init.rc:

2,底层server代码:

#define SOCKET_NAME "testserver"

#include <stdio.h>

#include <stdlib.h>

#include <errno.h>

#include <string.h>

#include <sys/types.h>

#include <netinet/in.h>

#include <sys/socket.h>

#include <sys/wait.h>

#include <sys/un.h>

#include <cutils/sockets.h>

#include <utils/Log.h>

//#include <android/log.h>

//#define LOGD(...) __android_log_print(ANDROID_LOG_ERROR, "myserver", __VA_ARGS__)

int main(){

int connect_number = 6;

int fdListen = -1, new_fd = -1;

int ret;

struct sockaddr_un peeraddr;

socklen_t socklen = sizeof (peeraddr);

int numbytes ;

char buff[256];

fdListen = android_get_control_socket(SOCKET_NAME);

if (fdListen < 0) {

//LOGD("Failed to get socket '" SOCKET_NAME "' errno:%d", errno);

perror("android_get_control_socket");

exit(-1);

}

ret = listen(fdListen, connect_number);

if (ret < 0) {

perror("listen");

exit(-1);

}

//It block until client connected.

new_fd = accept(fdListen, (sockaddr *) &peeraddr, &socklen);

if (new_fd < 0 ) {

//LOGE("Error on accept() errno:%d", errno);

perror("accept");

exit(-1);

}

if((numbytes = recv(new_fd,buff,sizeof(buff),0))==-1)

{

perror("recv");

exit(-1);

}

printf("%s",buff);

//将从客户端接收到的信息再发回客户端

if(send(new_fd,buff,strlen(buff),0)==-1)

{

perror("send");

close(new_fd);

exit(0);

}

close(new_fd);

close(fdListen);

return 0;

}

3,顶层client app代码:

参考:http://apps.hi.baidu.com/share/detail/38960550

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: