弦夜 10 發表於 January 2, 2010 檢舉 Share 發表於 January 2, 2010 最近想用 C++ 幫自己的網誌寫一個 RSS Reader不過自己對 C++ 沒什麼經驗,只對 PHP 有涉獵而已。希望能夠有 RSS 閱讀功能和 GUI我這個新手就先需學會這兩個吧:E 鏈接文章 分享到其他網站
j100002ben 10 發表於 January 2, 2010 檢舉 Share 發表於 January 2, 2010 先去找Socket傳輸範例接著去挖HTML傳輸架構和檔頭格式然後就是分析XML(這個好像有範例)GUI的話去找範例應該也有全部加起來應該就是你要的東西xd 鏈接文章 分享到其他網站
弦夜 10 發表於 January 2, 2010 作者 檢舉 Share 發表於 January 2, 2010 先去找Socket傳輸範例接著去挖HTML傳輸架構和檔頭格式然後就是分析XML(這個好像有範例)GUI的話去找範例應該也有全部加起來應該就是你要的東西xd搜尋時好像有 xml 的套件還啥的= =""Socket 我只會做接收訊息和發出訊息的東西= ="" 鏈接文章 分享到其他網站
j100002ben 10 發表於 January 2, 2010 檢舉 Share 發表於 January 2, 2010 搜尋時好像有 xml 的套件還啥的= =""Socket 我只會做接收訊息和發出訊息的東西= =""那就可以啦....Socket打上伺服器加上80 PortEX:http://nsysumis94.pixnet.net/blog/post/8782796然後就是傳送以下資料範例:(http://www.twvbb.com/vbb/external.php?type=rss2)GET /vbb/external.php?type=rss2 HTTP/1.0\r\nAccept text/html,application/xhtml+xml,application/xml\r\nAccept-Language zh-tw,en-us;q=0.7,en;q=0.3\r\nAccept-Charset Big5\r\nKeep-Alive 300\r\nConnection keep-alive\n\n不過要注意Big5轉UTF-8的問題....(用API解決比較快xd) 鏈接文章 分享到其他網站
弦夜 10 發表於 January 3, 2010 作者 檢舉 Share 發表於 January 3, 2010 Accept-Charset Big5\r\n直接設定成 UTF-8 不行嗎:p還有我的 Server 是使用 Linux 的,應該不用加上 \r 吧= =""先來研究看看~ 鏈接文章 分享到其他網站
弦夜 10 發表於 January 3, 2010 作者 檢舉 Share 發表於 January 3, 2010 (已編輯) 那就可以啦....Socket打上伺服器加上80 PortEX:http://nsysumis94.pixnet.net/blog/post/8782796然後就是傳送以下資料範例:(http://www.twvbb.com/vbb/external.php?type=rss2)不過要注意Big5轉UTF-8的問題....(用API解決比較快xd)我發現我之前學的 Socket 不能發 HTTP 請求(好像是功能太簡單,不會收回傳:'()然後版主給的範例打開後就關閉了T_T--- 後來找到的範例(原本是黏一行,我自己編排+修改成請求本機的 Apache 來測試)不過下面有個問題,目前只確定 400 Bad Request 時會有東西出現。其他時候都沒有反應= =""#include<winsock2.h>#include<stdio.h>#pragma comment(lib, "ws2_32.lib")int main() { WSADATA wsaData; SOCKET connect_socket; SOCKADDR_IN server_addr; char recv_buf[10000]; char* send_buf = "GET /output.txt HTTP/1.0\r\n"; if (WSAStartup(MAKEWORD(2, 2), &wsaData)) { printf("WSAStartup failed with error\n"); return 0; } connect_socket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(80); server_addr.sin_addr.S_un.S_addr = inet_addr("127.0.0.1"); if (SOCKET_ERROR == connect(connect_socket, (SOCKADDR*)&server_addr, sizeof(server_addr))) { printf("Connect Error\n"); return 0; } int flag = send(connect_socket, send_buf, strlen(send_buf), 0); if (flag == SOCKET_ERROR) { printf("Send HTTP Fail\n"); } else { printf("Send HTTP Successful\n"); } recv(connect_socket, recv_buf, 4096, 0); printf("%s\n", recv_buf); closesocket(connect_socket); WSACleanup(); system("pause");} --- 下午 6 點左右我成功收到 200 OK 的東西了:$不過 char 好像收不了太多訊息:'(XML 還沒讀完就存不了:'(這次我真的不會了(C++ 這方面問題我真的不懂= ="")--- 大約7點左右在 M$ 文件找到讀完方法,可是最後的好像多寫入一次= =""而且還有部份文字亂碼問題:'(#include<winsock2.h>#include<stdio.h>#include<string.h>#pragma comment(lib, "ws2_32.lib")int main() { WSADATA wsaData; SOCKET connect_socket; SOCKADDR_IN server_addr; char recv_buf[1024]; int Result; char* send_buf = "GET /feed HTTP/1.1\nAccept-Charset: UTF-8\nHost:blog.frost.tw\n\n"; FILE *fout; fout = fopen("output.txt", "w+t"); if (WSAStartup(MAKEWORD(2, 2), &wsaData)) { printf("WSAStartup failed with error\n"); return 0; } connect_socket = WSASocket(AF_INET, SOCK_STREAM, IPPROTO_TCP, NULL, 0, 0); server_addr.sin_family = AF_INET; server_addr.sin_port = htons(80); server_addr.sin_addr.S_un.S_addr = inet_addr("67.220.217.187"); if (SOCKET_ERROR == connect(connect_socket, (SOCKADDR*)&server_addr, sizeof(server_addr))) { printf("Connect Error\n"); return 0; } int flag = send(connect_socket, send_buf, strlen(send_buf), 0); if (flag == SOCKET_ERROR) { printf("Send HTTP Fail\n"); } else { printf("Send HTTP Successful\n"); } do{ Result = recv(connect_socket, recv_buf, 1024, 0); if( Result > 0 ) fprintf(fout, "%s\n", recv_buf); else if (Result == 0 ) printf("\nConnection Close\n"); else printf("recv failed: %d\n", WSAGetLastError()); }while( Result > 0 ); closesocket(connect_socket); WSACleanup(); system("pause");} --- 1/4 更新大致上都處理完了(趴不過還有一個問題:Linux 和 Windows 傳輸資料好像有差異,不能收 Linux 資料(會有問題)--- 1/9 更新終於把亂碼問題處理完畢……HTTP/1.1 和 HTTP/1.0 是元兇……HTTP/1.0 讓一切正常運作了!現在需要不需要引用任何 dll 就能分析XML的方法@@(GUI似乎有 Dev C++ 的 Example 參考……)--- 1/9 5:52內容仍有部份為亂碼……(求救- -) 此內容已被編輯, January 9, 2010 ,由 弦夜 增加訊息 鏈接文章 分享到其他網站
Recommended Posts
請登入後來留意見
在登入之後,您才能留意見
立即登入