资源简介
国嵌 Linux 项目专题3(安全文件传输)买板子送的
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define MAXBUF 1024
void ShowCerts(SSL * ssl)
{
X509 *cert;
char *line;
cert = SSL_get_peer_certificate(ssl);
if (cert != NULL) {
printf(“Digital certificate information:\n“);
line = X509_NAME_oneline(X509_get_subject_name(cert) 0 0);
printf(“Certificate: %s\n“ line);
free(line);
line = X509_NAME_oneline(X509_get_issuer_name(cert) 0 0);
printf(“Issuer: %s\n“ line);
free(line);
X509_free(cert);
}
else
printf(“No certificate information!\n“);
}
int main(int argc char **argv)
{
int ijsockfd len fd size;
char fileName[50]sendFN[20];
struct sockaddr_in dest;
char buffer[MAXBUF + 1];
SSL_CTX *ctx;
SSL *ssl;
if (argc != 3)
{
printf(“Parameter format error! Correct usage is as follows:\n\t\t%s IP Port\n\tSuch as:\t%s 127.0.0.1 80\n“ argv[0] argv[0]); exit(0);
}
/* SSL 库初始化 */
SSL_library_init();
OpenSSL_add_all_algorithms();
SSL_load_error_strings();
ctx = SSL_CTX_new(SSLv23_client_method());
if (ctx == NULL)
{
ERR_print_errors_fp(stdout);
exit(1);
}
/* 创建一个 socket 用于 tcp 通信 */
if ((sockfd = socket(AF_INET SOCK_STREAM 0)) < 0)
{
perror(“Socket“);
exit(errno);
}
printf(“socket created\n“);
/* 初始化服务器端(对方)的地址和端口信息 */
bzero(&dest sizeof(dest));
dest.sin_family = AF_INET;
dest.sin_port = htons(atoi(argv[2]));
if (inet_aton(argv[1] (struct in_addr *) &dest.sin_addr.s_addr) == 0)
{
perror(argv[1]);
exit(errno);
}
printf(“address created\n“);
/* 连接服务器 */
if (connect(sockfd (struct sockaddr *) &dest sizeof(dest)) != 0)
{
perror(“Connect “);
exit(errno);
}
printf(“server connected\n\n“);
/* 基于 ctx 产生一个新的 SSL */
ssl = SSL_new(ctx);
SSL_set_fd(ssl sockfd);
/* 建立 SSL 连接 */
if (SSL_connect(ssl) == -1)
ERR_print_errors_fp(stderr);
else
{
printf(“Connected with %s encryption\n“ SSL_get_cipher(ssl));
ShowCerts(ssl);
}
/* 接收用户输入的文件名,并打开文件 */
printf(“\nPlease input the filename of you want to load :\n>“);
scanf(“%s“fileName);
if((fd = open(fileNameO_RDONLY0666))<0)
{
perror(“open:“);
exit(1);
}
/* 将用户输入的文件名,去掉路径信息后,发给服务器 */
for(i=0;i<=strlen(fileName);i++)
{
if(fileName[i]==‘/‘)
{
j=0;
continue;
}
else {sendFN[j]=fileName[i];++j;}
}
len = SSL_write(ssl sendFN strlen(sendFN));
if (len < 0)
printf(“‘%s‘message Send failure !Error code is %d,Error messages are ‘%s‘\n“ buffer errno strerror(errno));
/* 循环发送文件内容到服务器 */
bzero(buffer MAXBUF + 1);
while((size=read
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 2086131 2009-06-16 22:55 项目专题3(安全文件传输)\OpenSSL\代码\库\openssl-0.9.6.tar.gz
文件 3852259 2009-06-16 22:08 项目专题3(安全文件传输)\OpenSSL\代码\库\openssl-0.9.8k.tar.gz
文件 1525 2010-02-27 11:00 项目专题3(安全文件传输)\OpenSSL\代码\编程范例\cacert.pem
文件 3607 2009-03-19 12:58 项目专题3(安全文件传输)\OpenSSL\代码\编程范例\client.c
文件 1675 2010-02-27 10:52 项目专题3(安全文件传输)\OpenSSL\代码\编程范例\privkey.pem
文件 4664 2009-03-20 11:55 项目专题3(安全文件传输)\OpenSSL\代码\编程范例\server.c
文件 32256 2009-03-20 16:08 项目专题3(安全文件传输)\OpenSSL\代码\编程范例\范例说明.doc
文件 533427 2009-06-09 10:31 项目专题3(安全文件传输)\OpenSSL\资料\openssl_program.chm
文件 237056 2009-06-09 10:31 项目专题3(安全文件传输)\OpenSSL\资料\openssl中文简介.doc
文件 1190527 2009-06-09 10:31 项目专题3(安全文件传输)\OpenSSL\资料\openssl编程.pdf
文件 624810 2010-02-27 21:27 项目专题3(安全文件传输)\实验手册.pdf
文件 5775 2009-09-20 21:03 项目专题3(安全文件传输)\线程池\编程范例\thread.c
文件 59392 2010-02-27 11:51 项目专题3(安全文件传输)\线程池\资料\条件变量.doc
文件 21504 2010-02-27 11:42 项目专题3(安全文件传输)\线程池\资料\线程池介绍.doc
文件 16010 2010-02-27 12:16 项目专题3(安全文件传输)\项目代码\客户端\client.c
文件 1851 2008-02-04 11:49 项目专题3(安全文件传输)\项目代码\客户端\client.h
文件 18 2009-09-17 13:04 项目专题3(安全文件传输)\项目代码\服务器\admin.txt
文件 1619 2009-03-16 19:39 项目专题3(安全文件传输)\项目代码\服务器\cacert.pem
文件 841109 2009-03-13 10:37 项目专题3(安全文件传输)\项目代码\服务器\log.txt
文件 2 2009-06-18 20:38 项目专题3(安全文件传输)\项目代码\服务器\maxclientnum.txt
文件 1679 2009-03-16 19:38 项目专题3(安全文件传输)\项目代码\服务器\privkey.pem
文件 26119 2010-02-27 12:09 项目专题3(安全文件传输)\项目代码\服务器\server.c
文件 1126 2008-01-28 19:19 项目专题3(安全文件传输)\项目代码\服务器\server.h
文件 0 2010-02-27 17:06 项目专题3(安全文件传输)\项目代码\服务器\user.txt
文件 189952 2008-12-01 13:56 项目专题3(安全文件传输)\项目文档\文档模版\XXX概要设计说明书.doc
文件 66048 2009-07-07 16:29 项目专题3(安全文件传输)\项目文档\文档模版\XXX测试报告.doc
文件 908800 2008-12-01 13:56 项目专题3(安全文件传输)\项目文档\文档模版\XXX详细设计说明书.doc
文件 68096 2009-07-07 16:27 项目专题3(安全文件传输)\项目文档\文档模版\XXX需求规格说明书.doc
文件 69120 2009-03-13 14:07 项目专题3(安全文件传输)\项目文档\概要设计.doc
文件 264192 2010-02-27 12:27 项目专题3(安全文件传输)\项目文档\详细设计.doc
............此处省略18个文件信息
相关资源
- zigbee基于嵌入式Linux的网关与Socket端口
- RTAI Linux实时操作系统原理剖析
- Linux C程序设计王者归来(源代码)
- 官方EC20 Linux驱动源码 GObinet +移植手册
- 杭电操作系统实验一--linux内核编译添
- fastDFS+Nginx安装包(Linux版本)
- Linux命令大全完整版PDF
- ZYNQ双核AMP官方例程双核分别跑Linux+裸
- 超好用的Linux习题题库
- lmbench-一个benchmark for linux
- RTL8188C_8192C_USB_linux_v4.0.2_9000.20130911.
- Linux/Unix系统编程手册英文版
- 《Linux教程第4版》[孟庆昌牛欣源][电
- hadoop 安装配置说明,以及相关实验等
- 《ARM嵌入式系统教程》-课件张石
- 无人超市管理系统.rar
- 中科大嵌入式Linux 期末复习
- Linux 平台USB CAN解析程序
- 30篇嵌入式系统论文
- 深入理解LINUX内核 第二版 深入理解
- linux shell脚本攻略第三版
- 华清远见-嵌入式Linux应用程序开发详
- 精通Linux第2版高清非扫描版
- Linux Shell脚本攻略第3版 超高清完整
- linux内核技术手册中英文版
- Exploring BeagleBone Tools and Techniques for
- 海康威视linux下二次开发
- Linux C编程-GTK+ 2.0 中文教程/使用GTK+
- DWA-171_RTL8811AU_Linux_v4.3.0_10674.20140321
- The Linux Programming Interface 原版pdf by K
评论
共有 条评论