從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...