Socket程式設計 傳送HTTP請求

2021-09-02 10:26:58 字數 1606 閱讀 2541

從tcp/ip模型的邏輯層面上來看,.net類可以視為包含3個主要層次:請求/響應層、應用協議層以及傳輸層。webrequest和webresponse工作在請求/響應層,支援http、tcp和udp的類組成了應用協議層,而socket類處於傳輸層。傳輸層位於這個結構的最底層,當其上層的應用協議層和請求/響應層不能滿足應用程式的特殊需要時,就需要使用傳輸層進行socket程式設計。

socket類包含在system.net.scokets命名空間中,而乙個socket例項包含了乙個端點的套接字資訊。

建構函式:public socket(addressfamily s, sockettype s, protocoltype p)

其中,引數a指定socket使用的定址方案,其值為addressfamily.internetwork,表示使用ipv4的位址方案;s指定socket的型別,其值為sockettype.stream時,表示連線是基於流套接字的,而為sockettype.dgram時,表示連線是基於資料報套接字的;p指定socket使用的協議,其值為protocoltype.tcp時,表示連線協議是tcp協議,而為protocoltype.udp時,表明連線協議是udp協議。

設計乙個簡單的程式,根據指定uri,用套接字傳送http請求,並將返回的資訊顯示在richtextbox之中。

執行結果

源**:

using system;

using system.collections.generic;

using system.componentmodel;

using system.data;

using system.drawing;

using system.linq;

using system.text;

using system.windows.forms;

using system.net;

using system.net.sockets;

namespace socket_request

private string dosocketget(string request, ipaddress address)

s.send(messages, messages.length, 0); //傳送http請求

int32 bytes = s.receive(receives, receives.length, 0); //接受http響應

//將http響應的位元組流裝換為字串

result = utf8.getstring(receives, 0, bytes);

}catch (socketexception ex)

return result;

}private void button1_click(object sender, eventargs e)

textshow.text = dosocketget(request, address);}}

}

利用fsockopen模擬HTTP傳送請求

首先檢查php.ini 中 allow url fopen 選項是否開啟,需要開啟 get 方式傳送請求 fp fsockopen localhost 80,errno,errstr,10 host 埠 錯誤碼 錯誤訊息 超時時間 請求行 http get http server.php?use 1...

springBoot自帶的傳送HTTP請求的API

springboot管理的專案,自動傳送http請乙個自動網頁獲取鏈結,首先考慮到用httpclient api,經同事指點用了springboot自帶的api,非常簡潔,兩行 如下。resttemplate resttemplate new resttemplate string forobjec...

非同步 SOCKET 程式設計 傳送和接收資料

我本想把傳送和接收分開作為兩部分,但是最後我決定只略微解釋一下 fd read 留下更多的時間來說明更複雜的 fd write fd read 事件非常容易掌握.當有資料傳送過來時,winsock 會以 fd read 事件通知你,對於每乙個 fd read 事件,你需要像下面這樣呼叫 recv i...