using System;
using System.Text;
using System.IO;
using ;
using .Sockets;public class Sample
{
public static string DoSocketGet(string server)
{
//Set up variables and String to write to the server.
Encoding ASCII = Encoding.ASCII;
string Get = "GET / HTTP/1.1\r\nHost: " + server +
"\r\nConnection: Close\r\n\r\n";
Byte[] ByteGet = ASCII.GetBytes(Get);
Byte[] RecvBytes = new Byte[256];
String strRetPage = null; // IPAddress and IPEndPoint represent the endpoint that will
// receive the request.
// Get first IPAddress in list return by DNS. try
{
// Define those variables to be evaluated in the next for loop and
// then used to connect to the server. These variables are defined
// outside the for loop to make them accessible there after.
Socket s = null;
IPEndPoint hostEndPoint;
IPAddress hostAddress = null;
int conPort = 80; // Get DNS host information.
IPHostEntry hostInfo = Dns.Resolve(server);
// Get the DNS IP addresses associated with the host.
IPAddress[] IPaddresses = hostInfo.AddressList; // Evaluate the socket and receiving host IPAddress and IPEndPoint.
for (int index=0; index<IPaddresses.Length; index++)
{
hostAddress = IPaddresses[index];
hostEndPoint = new IPEndPoint(hostAddress, conPort); // Creates the Socket to send data over a TCP connection.
s = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp );
// Connect to the host using its IPEndPoint.
s.Connect(hostEndPoint); if (!s.Connected)
{
// Connection failed, try next IPaddress.
strRetPage = "Unable to connect to host";
s = null;
continue;
} // Sent the GET request to the host.
s.Send(ByteGet, ByteGet.Length, 0); } // End of the for loop.
// Receive the host home page content and loop until all the data is received.
Int32 bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = "Default HTML page on " + server + ":\r\n";
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
while (bytes > 0)
{
bytes = s.Receive(RecvBytes, RecvBytes.Length, 0);
strRetPage = strRetPage + ASCII.GetString(RecvBytes, 0, bytes);
}
} // End of the try block.
catch(SocketException e)
{
Console.WriteLine("SocketException caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
catch(ArgumentNullException e)
{
Console.WriteLine("ArgumentNullException caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
catch(NullReferenceException e)
{
Console.WriteLine("NullReferenceException caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
catch(Exception e)
{
Console.WriteLine("Exception caught!!!");
Console.WriteLine("Source : " + e.Source);
Console.WriteLine("Message : " + e.Message);
}
return strRetPage;}
public static void Main()
{
Console.WriteLine("请需入请求地址:");
String server =Console.ReadLine();
Console.WriteLine(DoSocketGet(server));
//存一下档
string path = @"D:\Socket.html";
if(File.Exists(path))
{
File.Delete(path);
}
using(FileStream fs =File.Create(path))
{
Byte[] bs =new UTF8Encoding(true).GetBytes(DoSocketGet(server));
fs.Write(bs,0,bs.Length);
}
}
}关于Socket的学习代码
原创
©著作权归作者所有:来自51CTO博客作者biyusr216的原创作品,请联系作者获取转载授权,否则将追究法律责任
上一篇:Socket聊天程序客户端
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
关于iOS socket的讲解介绍
socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含
socket 服务器 通信 udp 数据 -
Java学习---TCP Socket的学习
Java学习---TCP Socket的学习
Java学习 java 客户端 服务器 -
Socket 关于设置Socket连接超时时间
做网络编程的人对setSoTimeout方法一定很熟悉,都知道是设
java .net java代码 -
关于socket的一些东西
自己一直没有涉足这个东西只是有人问把相关的东西发在这里 以备将来自己用Use the java.net cl
Socket Java .net java
















