Android:android2.3电话接听
2011-12-07 10:05
316 查看
最近在学openssl,想动手体验下其强大的功能,写了个简单的C/S通信程序,算是练习吧。
服务端:
/article/2778877.html
http://blog.csdn.net/wangyongjun_cn/article/details/5295398
http://blog.sina.com.cn/s/blog_65bda7120100kmcs.html
本文出自 “sdu_IS” 博客,请务必保留此出处http://hychuanshuo.blog.51cto.com/2724628/1384544
服务端:
#include <stdlib.h> #include <stdio.h> #include <netinet/in.h> #include <sys/socket.h> #include <sys/types.h> #include <arpa/inet.h> #include <unistd.h> #include <openssl/ssl.h> int main( int argc, char * argv[] ) { int servfd, connfd; socklen_t clilen; struct sockaddr_in servaddr, cliaddr; char buff[512]; pid_t chipid; servaddr.sin_family = AF_INET; servaddr.sin_port = htons( 8888 ); servaddr.sin_addr.s_addr = htonl( INADDR_ANY ); SSL_CTX * ctx; SSL_library_init(); OpenSSL_add_all_algorithms(); if ( (ctx = SSL_CTX_new( SSLv23_server_method() )) == NULL ) { printf( "error1" ); return 0; } if ( SSL_CTX_use_certificate_file( ctx, argv[1], SSL_FILETYPE_PEM ) <= 0 ) { printf( "error2" ); return 0; } if ( SSL_CTX_use_PrivateKey_file( ctx, argv[2], SSL_FILETYPE_PEM ) <= 0 ) { printf( "error3" ); return 0; } if( !SSL_CTX_check_private_key( ctx ) ) { printf( "keyerror" ); return 0; } servfd = socket( AF_INET, SOCK_STREAM, 0 ); bind( servfd, (struct sockaddr *)&servaddr, sizeof(servaddr) ); listen( servfd, 10 ); for ( ; ; ) { SSL * ssl; clilen = sizeof(cliaddr); connfd = socket( AF_INET, SOCK_STREAM, 0 ); connfd = accept( servfd, (struct sockaddr *)&cliaddr, &clilen ); chipid = fork(); if ( chipid != 0 ) close( connfd ); else { close( servfd ); ssl = SSL_new( ctx ); SSL_set_fd( ssl, connfd ); SSL_accept( ssl ); SSL_read( ssl, buff, 512 ); printf( "%s\n", buff ); SSL_shutdown( ssl ); SSL_free( ssl ); close( connfd ); SSL_CTX_free( ctx ); return 0; } } }客户端:
#include <stdio.h> #include <stdlib.h> #include <sys/socket.h> #include <sys/types.h> #include <netinet/in.h> #include <arpa/inet.h> #include <unistd.h> #include <openssl/ssl.h> int main() { int connfd; char buff[512] = {0}; SSL_CTX * ctx; SSL * ssl; struct sockaddr_in servaddr; servaddr.sin_family = AF_INET; servaddr.sin_port = htons( 8888 ); inet_pton( AF_INET, "127.0.0.1", &servaddr.sin_addr ); SSL_library_init(); OpenSSL_add_all_algorithms(); ctx = SSL_CTX_new( SSLv23_client_method() ); connfd = socket( AF_INET, SOCK_STREAM, 0 ); connect( connfd, (struct sockaddr *)&servaddr, sizeof(servaddr) ); ssl = SSL_new( ctx ); SSL_set_fd( ssl, connfd ); SSL_connect( ssl ); printf( "please input some words:" ); scanf( "%s", buff ); SSL_write( ssl, buff, 512 ); return 0; }另外,有几篇文章对此介绍的比较详细:
/article/2778877.html
http://blog.csdn.net/wangyongjun_cn/article/details/5295398
http://blog.sina.com.cn/s/blog_65bda7120100kmcs.html
本文出自 “sdu_IS” 博客,请务必保留此出处http://hychuanshuo.blog.51cto.com/2724628/1384544
相关文章推荐
- Android2.3以后拨打、接听、挂断电话操作
- android2.3 电话接听解决方法
- Android 电话自动接听和挂断详解
- ANDROID 自动接听 支持2.3以上版本
- Android开发——短信电话拦截/接听电话
- android2.3上来电接听的方法
- Android自动接听和挂断电话实现原理
- Android拨打、接听、挂断电话操作
- Android电话响铃、接听、挂断状态
- android 4.0以上系统如何实现自动接听电话
- android 5.0 自动接听电话
- Android 电话的反射调用机制实现自动接听电话
- Android 接近传感器实现判断接听电话
- Android自动接听&挂断电话(包含怎么应对4.1以上版本的权限检
- [Android]挂断、接听电话
- android 2.1 监听电话状态并自动接听来电
- android 自定义接听电话时报错:java.lang.SecurityException: Neither user 10088 nor current process has android.p
- Android 蓝牙开发(八)hfp接听、挂断电话
- android 电话接听流程解析
- Android 电话的反射调用机制实现静默接听电话