资源简介
经典源码!俄罗斯方块源码,单片机源码,飞机订票系统源码,中国象棋源码,贪吃蛇源码等等!

代码片段和文件信息
/***************************************************************************
* *
* 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语言编写的跨平台线程库
- 下一篇:教学工作量计算器
相关资源
- 基于MFC的TCP调试助手源码95706
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- 安科瑞智能电能表MODBUS通讯程序 VC6
- 九齐单片机源码
- Qt画图工具源码(qgraphics draw)
- qt 串口助手源码
- modbus 主机源码
- 《LINUX C编程从初学到精通》光盘源码
- OLED驱动源码
- tm1650+stm32f103源码(board_tm1650.c)
- cheat engine 7.2源码
- CrySearch内存搜索器源码
- FTP客户端源码(c++)
- MFC视频播放器源码(支持avi/wma/mp3等格
- CreatBitmap图片合成源码
- vs2008 can总线通讯源码
- 宠物管理系统课程设计(源码+数据库
- Windows扩展命令程序(源码)
- c语言实现火车订票系统(控制台)源
- 鼠标连点器(附源码)
- c++ 简易贪吃蛇源码
- 杀毒软件源码
- 经典外汇智能交易程序Amazing3.1源码(
- 微型文件系统源码(FatFs)
- 海康私有流分析接口源码(附使用说
- VC6 USB开发源码
- SVM算法实现(源码+文档)
- 俄罗斯方块游戏源码(Tetris)
- 步进电机控制(源码+文档)
评论
共有 条评论