#include <stdio.h> #include <winsock2.h> #pragma comment(lib,"Ws2_32.lib") int main() { WSADATA wsa; WSAStartup(MAKEWORD(2,2),&wsa); SOCKET serverSocket; serverSocket=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); struct sockaddr_in serverAddress; memset(&serverAddress,0,sizeof(sockaddr_in)); serverAddress.sin_family=AF_INET; serverAddress.sin_addr.S_un.S_addr = inet_addr("74.125.71.147"); // serverAddress.sin_addr.S_un.S_addr = inet_addr("211.100.26.77"); serverAddress.sin_port = htons(80); connect(serverSocket,(struct sockaddr*)&serverAddress,sizeof(serverAddress)); char * msgHttpRequest = "GET http://portablecb.googlecode.com/files/LoveDEV.7z HTTP/1.1/r/n" "Host:google.comt/r/n" "Accept:*/* /r/n/r/n"; FILE *fp; fp = fopen("l.jpg","w+"); int nCount = 0; int nTimes = 1; while (nTimes--) { send(serverSocket,msgHttpRequest,strlen(msgHttpRequest),0); Sleep(3100); char recvBuff[1024] = { 0 }; int ret = 0; while (1) { //記得檢查HTTP的狀態 memset(recvBuff,0,1024); ret = recv(serverSocket,recvBuff,1024,0); if( ret < 0) { closesocket(serverSocket); break; } if( ret == 0 ) { break; } printf("%s/n",recvBuff); } char * pCharFind = NULL; pCharFind = strstr(recvBuff,"bytes"); int len = pCharFind - recvBuff; len += 4; int recvLen = strlen(recvBuff); fwrite((void*)(recvBuff + len),strlen(recvBuff) - len,strlen(recvBuff) -len,fp); fflush(fp); fclose(fp); printf("len:%d/n%s/n",recvLen,recvBuff); printf("----------------------------------------"); printf("%d/n/n",nCount++); Sleep(100); } return 0; } =================================================== #include <string> #include <iostream> #include <stdio.h> #include <winsock.h> #include <conio.h> using namespace std; #pragma comment("ws2_32.lib") string host2ip(const string& strdomain); void save2file(char *buffer,const string& filename); int getlength(const string& sheader); bool getstatus(const string& sheader); int getleftlength(const string& sheader); void sethttphead(const string& file,const string& server); int port = 80; int error=0; string serveraddr; int i = 0; const int BUFFER_SIZE = 1024; char buffer[BUFFER_SIZE] = {0}; char msg[BUFFER_SIZE]; FILE *f; const string file = "/BT/200801/3/117906.torrent"; const string url = "www.supbt.com"; const string filename = "117906.torrent"; int main(void) { int r; WSADATA wsa; SOCKET sock; struct sockaddr_in sin; f = fopen(filename.c_str(),"ab"); sethttphead(file,url); if(WSAStartup(MAKEWORD(2,2),&wsa)) { printf("WSAStartup Error: %d/n",WSAGetLastError()); getche(); return -1; } if((sock=socket(AF_INET,SOCK_STREAM,IPPROTO_TCP))==INVALID_SOCKET) { printf("Socket Error: %d/n",WSAGetLastError()); getche(); return -1; } sin.sin_family=AF_INET; sin.sin_port=htons(port); serveraddr = host2ip(url); cout << serveraddr << endl; sin.sin_addr.s_addr=inet_addr(serveraddr.c_str()); if(connect(sock,(struct sockaddr *)&sin,sizeof(sin))==SOCKET_ERROR) { printf("Connect Error: %d/n",WSAGetLastError()); printf("請檢測網絡連接!/n"); getche(); return -1; } if((r=send(sock,msg,sizeof(msg),0))==SOCKET_ERROR) { printf("Send Error: %d/n",WSAGetLastError()); getche(); return -1; } memset(buffer,0,BUFFER_SIZE); if((r=recv(sock,buffer,BUFFER_SIZE,0))==SOCKET_ERROR) { printf("Recv Error: %d/n",WSAGetLastError()); closesocket(sock); return -1; } string header = string(buffer); int ilength = getlength(header); int leftlength = ilength; int icount; if(getstatus(header)){ //current is r char *q = buffer; char *p = strstr(buffer, "/r/n/r/n"); p += 4; //注意這裏得 r - (p-q) 非常關鍵得問題 fwrite(p,r - (p - q),1,f); leftlength -= r - (p - q); int i=0; icount = r - (p - q); while(true) { memset(buffer, 0, BUFFER_SIZE); r = recv(sock, buffer, BUFFER_SIZE, 0); if (r < 0) { closesocket(sock); return 2; } if (r == 0) { break; } int tmp; tmp = leftlength; //209 100 100 92 leftlength -= r; if(leftlength > 0){ fwrite(buffer,r,1,f); icount += r; } else if(leftlength == 0){ // break; } else{ icount += tmp; fwrite(buffer,tmp,1,f); break; } cout << i++ << " r is "<< r << endl; } }else{ cout << "http protocal error" << endl; } cout << icount << endl; fclose(f); closesocket(sock); WSACleanup(); getche(); return 0; } /* 構造HTTP頭 */ void sethttphead(const string& file,const string& server) { strcat(msg,"GET "); strcat(msg,file.c_str()); strcat(msg," HTTP/1.1"); strcat(msg,"/r/n"); strcat(msg,"Accept:*/*"); strcat(msg,"/r/n"); //strcat(msg,"Accept-Language: zh-cn"); //strcat(msg,"/r/n"); //strcat(msg,"Accept-Encoding: gzip, deflate"); //strcat(msg,"/r/n"); strcat(msg,"User-Agent: Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)"); strcat(msg,"/r/n"); strcat(msg,"Host:"); strcat(msg,server.c_str()); strcat(msg,"/r/n"); strcat(msg,"Connection: Keep-Alive"); strcat(msg,"/r/n"); strcat(msg,"/r/n"); } //--------------------------------------------------------------------------- /* 將domain 轉換爲IP地址 */ string host2ip(const string& strdomain) { SOCKADDR_IN saddr; WORD wVersionRequested; WSADATA wsaData; hostent *pHostIp; int nErrorNum; wVersionRequested = MAKEWORD(2, 2); nErrorNum = WSAStartup(wVersionRequested, &wsaData); if(nErrorNum != 0) { return ""; } saddr.sin_family = AF_INET; pHostIp = gethostbyname(strdomain.c_str()); if(pHostIp == NULL) { return "0.0.0.0"; } WSACleanup(); return (string)inet_ntoa(*(LPIN_ADDR)*(pHostIp->h_addr_list)); } /* 該方法爲測試用法,併爲應用到項目中 */ void save2file(char *buffer,const string& filename) { FILE *f; f = fopen(filename.c_str(),"a+"); fwrite(buffer,strlen(buffer),1,f); fclose(f); } /* 該方法獲取待下載文件大小 */ int getlength(const string& sheader){ char * cont_len_pos; unsigned long cont_length; const char* header = sheader.c_str(); cont_len_pos =(char *)strstr(header,"Content-Length:"); cont_len_pos = (char *)strchr(cont_len_pos,' '); cont_len_pos++; sscanf(cont_len_pos, "%ld", &cont_length); return cont_length; } /* 該方法判斷是否Get成功,不成功就取消下載文件 */ bool getstatus(const string& sheader){ string start = "HTTP/1.1 200 OK"; if(sheader.find(start,0) != string::npos){ return true; } else{ return false; } } /* 該方法並沒有用到,開始考慮多了 */ int getleftlength(const string& sheader){ int nreturnl = 0; int ilength = sheader.length(); string _send = "/r/n/r/n"; int istart = sheader.find_last_of(_send); if(istart != string::npos){ nreturnl = ilength - istart -_send.length(); } return nreturnl; }
title: Vue CLI 4與項目構建實戰指南 date: 2024/6/9 updated: 2024/6/9 excerpt: 這篇文章介紹瞭如何使用Vue CLI優化項目構建配置,提高開發效率,涉及配置管理、項目部署策略、插件系
title: Vue第三方庫與插件實戰手冊 date: 2024/6/8 updated: 2024/6/8 excerpt: 這篇文章介紹瞭如何在Vue框架中實現數據的高效驗證與處理,以及如何集成ECharts、D3.js、Chart.
改自這位兄臺的一段代碼 https://www.cnblogs.com/xiayang/archive/2010/07/19/1780566.html 1 /// <summary> 2 /// 生成一個樹形的表樣
Docker與銀河麒麟的兼容性問題 背景 大過節的出差. 客戶想遷移環境, 優先使用銀河麒麟的系統. 有一個需要使用容器docker運行nginx的的需求 結果發現被坑的很慘. 所以記錄一下 問題以及解決方案 安裝完docker
政務雲參考技術架構行業優勢總體架構 政務雲平臺技術框架圖,由機房環境、基礎設施層、支撐軟件層及業務應用層組成,在運維、安全和運營體系的保障下,爲政務雲使用單位提供統一服務支撐。功能架構標準雙區隔離 參照國家電子政務規範,打造符合標準的雙區
linux腳本編寫備忘1、linux腳本的回車換行符最好用unix格式的。否則某些系統下運行會出錯,例如veket18中必須要求是LF格式。Unix 系統(包括 Linux 和 macOS):使用 LF (Line Feed, \n) 字符
昨天很晚的時候,我運營的知識星球裏有一位同學,找我諮詢了幾個問題。 都是軟件測試崗位的面試題,一個是質量保障的方法論,一個是場景分析的邏輯題,還有一個則是他的困惑:面試時候理論知識和經驗法則,孰優孰劣。 和他分析了他的面試過程,針對他
Spring基礎 - Spring核心之控制反轉(IOC) 概要 我們知道,Spring提供的容器又稱爲IoC容器。其實,IoC(Inversion of control )不是 Spring 提出來的,它們在 Spring 之前其
場景:ETL溝通交流羣內有小夥伴反饋,如何在同步一批數據完成之後記錄下同步結果呢?或者是調用後續步驟、存儲過程、三方接口等。 解決:使用步驟Blocking step進行阻塞處理即可。 1、下面的demo演示從表t1同步數據至表t2(t1表
主題:geek主題(博主用的就是這一款) 該博主還開發了一個皮膚構建工具 awescnb,可以在博客園安裝這個項目中已經集成的皮膚 https://www.yuque.com/awescnb/user 1、進入博客園的設置裏面申請開通js權
你有沒有過這樣的經歷?使用一款減肥app,通過它的圖表來監控自己的體重變化,並預測何時能達到理想體重。這款app預測我需要八年時間才能恢復到大學時的體重,這種不切實際的預測是因爲應用使用了簡單的線性模型來進行體重預測。這個模型將我所有過去的
Java中的線程中斷是一個複雜但非常重要的概念,它允許一個線程告知另一個線程希望它停止正在做的事情。這個機制是協作式的,意味着被請求中斷的線程需要自己檢查中斷狀態,並且決定如何響應中斷請求。下面我將系統地講解Java中的線程中斷知識點。
1.14版(含14)視圖節點groups屬性的處理結果表現在可見性上(invisible),如果當前用戶不在指定的角色中,則設置可見性標記invisible爲"1" 2.16版(含16)以後對視圖節點groups屬性的處理
除了btree外,lightdb是支持hash index的,但是總體來說支持的特性範圍均不如btree索引,比如parallel沒有btree索引智能,不支持=之外的操作,不支持bitmap index scan,不支持哈希唯一索引(
pathlib.Path("a.crt").write_text(a[0]) p.chmod(0o444) Path.cwd() p.write_bytes(b'Binary file contents') p.read_bytes()