资源简介
经典源码!俄罗斯方块源码,单片机源码,飞机订票系统源码,中国象棋源码,贪吃蛇源码等等!
代码片段和文件信息
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License or *
* (at your option) any later version. *
* *
* copyright : (C) 2002 by Zhang Yong *
* email : z-yong163@163.com *
***************************************************************************/
#include “httpsession.h“
#include “sessionlistener.h“
#include “icqsocket.h“
#include “icqclient.h“
#include “udppacket.h“
#include “base64.h“
#define MYICQ_HTTP_PORT 443
enum {
HTTP_STATUS_CONNECT
HTTP_STATUS_ESTABLISHED
};
HttpSession::HttpSession()
{
sock = -1;
status = -1;
listener = NULL;
bufSize = 0;
}
HttpSession::~HttpSession()
{
if (sock >= 0)
IcqSocket::closeSocket(sock);
}
bool HttpSession::start(const char *destHost ProxyInfo &proxy)
{
this->destHost = destHost;
bufSize = 0;
if (sock >= 0)
IcqSocket::closeSocket(sock);
sock = IcqSocket::createSocket(SOCK_STREAM this);
sockaddr_in addr;
memset(&addr 0 sizeof(addr));
addr.sin_family = AF_INET;
uname = proxy.username;
passwd = proxy.passwd;
const char *host = proxy.host.c_str();
if ((addr.sin_addr.s_addr = inet_addr(host)) == INADDR_NONE) {
hostent *he = gethostbyname(host);
if (!he)
goto failed;
addr.sin_addr = *(in_addr *) he->h_addr;
}
addr.sin_port = htons(proxy.port);
status = HTTP_STATUS_CONNECT;
if (connect(sock (sockaddr *) &addr sizeof(addr)) == 0)
onConnect(true);
else if (IcqSocket::getSocketError() != EINPROGRESS)
goto failed;
return true;
failed:
close(sock);
sock = -1;
listener->sessionfinished(false);
return false;
}
void HttpSession::onConnect(bool success)
{
if (!success) {
listener->sessionfinished(false);
return;
}
string request = “CONNECT “;
request += destHost + “:“ + itoa(MYICQ_HTTP_PORT buf 10);
request += “ HTTP/1.0\r\n“;
request += “User-agent: MyICQ\r\n“;
if (!uname.empty()) {
string str = uname + “:“ + passwd;
char *code = NULL;
encode_base64(str.c_str() str.length() &code);
if (code) {
request += “Proxy-authorization: Basic “;
request += code;
request += “\r\n“;
free(code);
}
}
request += “\r\n“;
send(sock request.c_str() request.length() 0);
}
bool HttpSession::onReceive()
{
int n;
if (status == HTTP_STATUS_CONNECT) {
n = recv(sock buf sizeof(buf) 0);
if (n <= 0)
goto failed;
buf[n] = ‘\0‘;
char *p1 = strchr(buf ‘ ‘);
char *p2 = strchr(buf ‘\r‘);
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 5039 2006-06-06 09:56 c,c++源码\ICQ即时通讯源码\downcode.com.txt
文件 5039 2006-06-06 09:56 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\downcode.com.txt
文件 624 2002-05-31 15:24 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\1-1.bmp
文件 624 2002-05-31 15:24 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\1-2.bmp
文件 632 2002-05-31 15:24 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\1-3.bmp
文件 624 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\10-1.bmp
文件 620 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\10-2.bmp
文件 624 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\10-3.bmp
文件 596 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\11-1.bmp
文件 588 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\11-2.bmp
文件 596 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\11-3.bmp
文件 620 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\12-1.bmp
文件 604 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\12-2.bmp
文件 620 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\12-3.bmp
文件 588 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\13-1.bmp
文件 588 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\13-2.bmp
文件 588 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\13-3.bmp
文件 630 2002-05-31 15:24 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\14-1.bmp
文件 624 2002-05-31 15:24 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\14-2.bmp
文件 628 2002-05-31 15:24 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\14-3.bmp
文件 628 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\15-1.bmp
文件 624 2002-05-31 15:24 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\15-2.bmp
文件 624 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\15-3.bmp
文件 628 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\16-1.bmp
文件 624 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\16-2.bmp
文件 628 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\16-3.bmp
文件 600 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\17-1.bmp
文件 604 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\17-2.bmp
文件 604 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\17-3.bmp
文件 632 2002-05-30 23:48 c,c++源码\ICQ即时通讯源码\MyICQ-0.8-alpha1\myicq-win32\face\18-1.bmp
............此处省略1125个文件信息
- 上一篇:C语言编写的跨平台线程库
- 下一篇:教学工作量计算器
相关资源
- 用C语言编写的经典小游戏
- 冒险岛c++服务端源码
- Gerver View 源码
- VC++ ftp 服务器客户端毕业设计源码
- 变频器源码 DSPIC30F5015电机控制专用芯
- EM算法源码C++硬币问题
- D3D11 最新HOOK 源码支持X86_X64
- 词法分析C++源码
- 五子棋人机对战源码(C++)
- VC++串口通信20个经典源码
- c++ 拉格朗日插值、分段线性插值、三
- PE Explorer V1.99 R5 绿色汉化特别版
- vc++ MD5算法源码
- 自制杀毒软件C++源码
- TeeChart8+_ActiveX 破解版带源码
- C++ MFC 编写的聊天室软件源码
- 谭浩强C程序设计第五版课件及源码
- 基于VC++的包过滤防火墙论文+源码
- matcom4.5
- [源码&文档] 基于OpenCV的室内目标跟踪
- C++常用经典算法源码
- 车牌识别c++源码
- 计算机常用数值计算算法与程序 c++版
- 个人日程管理系统源码MFC
- 模拟炒股源码 集合6个
- Accelerated C++ 中文版(pdf及书源码)
- RBF神经网络C++源码
- 《数据结构与算法分析:C语言描述》原
- Qt实现的迷宫与魔塔游戏 源码迷宫模
- 伐木工控制台小游戏源码VS2015 C++
评论
共有 条评论