全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2142
推到 Plurk!
推到 Facebook!

請問如何通過WINSOCK對發送http頭請求

缺席
cyy0754
一般會員


發表:2
回覆:2
積分:0
註冊:2008-04-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-04-18 17:33:15 IP:219.137.xxx.xxx 訂閱
例如我想對指定網站提供數據能如何實現,
如對http://127.0.0.1/get.asp這個頁面想只發送提交
string的數據:“test”是純指定數據。也就是HTTP頭的請求。能如何實現?

HTTP控件能實現,不過我的是控制台的程序,所以想直接調用WINSOCK實現
記得曾經有個叫NC.EXE的黑客軟件好像就具備這樣的提交數據到指定WEB HOST的功能

我想提交個信息如:

GET /board.php?cid=30&fid=67&tid=93365 HTTP/1.1
Accept: */*
Referer: http://delphi.ktop.com.tw/board.php?cid=30&fid=67
Accept-Language: zh-cn
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0;Tencent Traveler4.0; Windows NT 5.1; SV1)
Accept-Encoding: gzip, deflate
Host: delphi.ktop.com.tw
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: __ut

類似這樣的數據。

希望大大能提供個DLEPHI的WINSOCK的例子,非VCL的。感謝
編輯記錄
cyy0754 重新編輯於 2008-04-18 17:43:46, 註解 無‧
cyy0754 重新編輯於 2008-04-18 17:44:43, 註解 無‧
cyy0754 重新編輯於 2008-04-18 18:17:07, 註解 無‧
cyy0754 重新編輯於 2008-04-18 18:17:07, 註解 無‧
cyy0754 重新編輯於 2008-04-18 18:17:08, 註解 無‧
cyy0754
一般會員


發表:2
回覆:2
積分:0
註冊:2008-04-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-04-19 01:28:53 IP:219.137.xxx.xxx 訂閱

[code delphi]
procedure SendDATA(AIP: string; APort: integer);
var
data: TWSAData;
sock: TSocket;
addr: TSockAddrIn;
iaddr: TInAddr;
buff : array [0..1023] of char;
begin
try
if (WSAStartup($0101, data) = 0) then
begin
sock := socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock <> INVALID_SOCKET) then
begin
// zero out the addr struct.
FillChar(addr, SizeOf(TSockAddrIn), 0);
FillChar(iaddr, SizeOf(TInAddr), 0);
//fill in the internet address
iaddr.S_addr := inet_addr(PChar(AIP));
//fill in the rest of the address.
addr.sin_family := PF_INET;
addr.sin_port := htons(APort);
addr.sin_addr := iaddr;
if (connect(sock, addr, SizeOf(TSockAddrIn)) = 0) then
begin
buff := (GET ..............TEST');
if (send(sock ,buff ,SizeOf(buff) , 0) = SOCKET_ERROR) then
begin
ShowMessage('Send Error');
end;
closeSocket(sock);
end
end else
begin
ShowMessage('error socket');
end;
end else
begin
ShowMessage('Failed to initialize winsock.');
end;
finally
WSACleanup();
end;
end;

[/code]

但是問題是只能針對IP。例如對域名DNS的話就不起作用?
如果我想對www.Baidu.com的話
iaddr.S_addr := inet_addr(PChar(AIP));
就不行了,望指教...
因為是對網站提交數據而不是對IP的。
編輯記錄
cyy0754 重新編輯於 2008-04-19 01:29:52, 註解 無‧
系統時間:2024-04-24 3:48:31
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!