要求通过HTTP或FTP协议传输字节数据流(以字节格式)。我正在做它与IP协议,但因为它是无法由负载均衡器处理。现在我通过转换成字节格式发送数据流,并在接收端解码成字符串形式。HTTP协议也是这样
Socket sock = new Socket(AddressFamily.InterNetwork,
SocketType.Stream, ProtocolType.IP);
在ProtocolType.IP
这里应该有HTTP,但是HTTP选项没有。
HTTP不是那个级别的协议-它是应用级别的协议。
你不会得到"一个HTTP套接字"——你通常会得到一个TCP/IP套接字,并在上面写HTTP数据。
有关所涉及的网络层的更多细节,请参阅OSI模型。
我不确定。net中内置的HTTP客户端库是否支持流请求…您可能希望关闭缓冲并写入请求流。看看在套接字级别使用类似WireShark的东西是什么样子的。
ProtocolType
枚举不包括HTTP。HTTP是OSI模型中应用层的一部分。从来就没有"HTTP套接字"的概念。HTTP封装在TCP/IP中。ProtocolType
枚举指传输协议。
来自MSDN上的协议类型枚举,
IP Internet Protocol.
IPv6HopByHopOptions IPv6 Hop by Hop Options header.
Icmp Internet Control Message Protocol.
Igmp Internet Group Management Protocol.
Ggp Gateway To Gateway Protocol.
IPv4 Internet Protocol version 4.
Tcp Transmission Control Protocol.
Pup PARC Universal Packet Protocol.
Udp User Datagram Protocol.
Idp Internet Datagram Protocol.
IPv6 Internet Protocol version 6 (IPv6).
IPv6RoutingHeader IPv6 Routing header.
IPv6FragmentHeader IPv6 Fragment header.
IPSecEncapsulatingSecurityPayload IPv6 Encapsulating Security Payload header.
IPSecAuthenticationHeader IPv6 Authentication header. For details, see RFC 2292 section 2.2.1, available at http://www.ietf.org.
IcmpV6 Internet Control Message Protocol for IPv6.
IPv6NoNextHeader IPv6 No next header.
IPv6DestinationOptions IPv6 Destination Options header.
ND Net Disk Protocol (unofficial).
Raw Raw IP packet protocol.
Unspecified Unspecified protocol.
Ipx Internet Packet Exchange Protocol.
Spx Sequenced Packet Exchange protocol.
SpxII Sequenced Packet Exchange version 2 protocol.
Unknown Unknown protocol.
看http://social.msdn.microsoft.com/forums/en-US/netfxnetcom/thread/7be22396-0f2a-4138-b47a-09d93894185b第一篇文章展示了如何通过HTTP-Request发送一些字节。适合您使用:
byte[] data;
// ...
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(server);
request.ContentType = "application/octet-stream";
request.Method = "POST"; // I think, your data is too big for GET
request.ContentLength = data.Length;
try {
Stream postStream = request.GetRequestStream();
postStream.Write(data, 0, data.Length);
postStream.Close();
} catch(Exception ex) {
throw new Exception(ex.Message);
}