资源简介
访问Https通信协议做的网站的时候,建立的socket套接字需要SSL协议认证 ,加密之后,才可以和网站建立资源
代码片段和文件信息
/*
* OpenSSL SSL/TLS Https Client example
* Only for Unix/Linux:
* cc -c https.c
* cc -o https https.c -lssl
* OpenSSL library needed.
*
* 同时支持普通的socket连接以及基于普通socket基础之上的ssl
* 连接。这对于已有的socket程序修改来说会比较方便,不至于
* 和原来的结构发生太大的冲突.
* 要注意的一点,似乎当使用socket套接字来创建ssl连接的时候
* 如果套接字是采用非阻塞方式建立的话,会导致ssl会话失败,不
* 知道为什么。所以这里对于提供给https的套接字采用了普通的
* connect方法创建。
*
*/
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define BUF_LEN 1024
#define MAX_STRING_LEN 2048
//xnet_select x defines
#define READ_STATUS 0
#define WRITE_STATUS 1
#define EXCPT_STATUS 2
/* flag to set request with ssl or not. */
static int bIsHttps = 1;
static int timeout_sec = 10;
static int timeout_microsec = 0;
void err_doit(int errnoflag const char *fmt va_list ap);
void err_quit(const char *fmt ...);
int create_tcpsocket(const char *host const unsigned short port);
int xnet_select(int s int sec int usec short x);
int main(int argc char* argv[])
{
char* host = “127.0.0.1“;
unsigned short port = 80;
int fd;
SSL *ssl;
SSL_CTX *ctx;
int nret;
char buf[BUF_LEN];
char* requestpath = “/“;
if( argc == 5 )
{
host = argv[1];
port = atoi(argv[2]);
requestpath = argv[3];
bIsHttps = atoi(argv[4]);
}
else
printf(“Argc Err !!!“);
printf(“host:%s port:%d requestpath:%s\n“hostportrequestpath);
/* make connection to the cache server */
fd = create_tcpsocket(host port);
printf(“建立套接字\n“);
/* http request. */
sprintf(buf “GET %s HTTP/1.0\r\nHost: %s\r\n\r\n“requestpath host);
if(bIsHttps != 1)
{
if(xnet_select(fd timeout_sec timeout_microsec WRITE_STATUS)>0)
{
/* send off the message */
printf(“发送数据内容:%s\n“buf);
write(fd buf strlen(buf));
}
else
{
err_quit(“Socket I/O Write Timeout %s:%d\n“ host port);
}
printf(“Server response:\n“);
while (xnet_select(fd timeout_sec timeout_microsec READ_STATUS)>0)
{
if ((n = read(fd buf BUF_LEN-1)) > 0)
{
buf[n] = ‘\0‘;
printf(“%s“ buf);
}
else
{
break;
}
}
// close the plain s
相关资源
- svmpredict.mexw64 svmtrain.mexw64 及c文件
- GPS格式转换程序RNXCMP
- 筒仓仓壁计算excel
- PCB logo 脚本 AD9通用
- 基于CSocKet的网络应用五子棋设计与实
- SL3S4011 IIC 驱动程序
- 降采样C函数
- 华为H3C 802.1X客户端[兼容INODE V2.4-335
- csapp lab6 malloc lab 96pt
-
汇编工具masm.exe li
nk.exe cref.exe debu - NC601串口服务器驱动
- 元胞自动机模型
- dea-excel-solver
- 美国大学生数学建模B题原题+翻译
- 基于AT89C52单片机的光功率计的设计
- uc3825推挽
- Navicat Premium 15.0.4可用汉化语言包269
- FFT 多项式乘法 C代码
- C0编译器北航编译课设
- cdslmd.exe
- Window编译opencore-amr
- 89C52RC+A4988 控制步进电机和5V线激光
- BCM shell user manual
- 基于.net的图书馆管理系统设计与实现
- Qt ActiveX 开发帮助文档
- Interop.Shell32.dll
- Winpcap 开发包 4.1.2
- ArcGIS 10.1 for Server
- 基于SpringMVC校园管理系统的设计与实
- 基于Zemax的手机摄像镜头光学设计.d
评论
共有 条评论