1

我想使用套接字方法连接到 URL(http://msdn.microsoft.com/en-us/library/system.net.sockets.socket(v=VS.96).aspx);

但我不连接。

我总是收到错误:HostNotFound,但是,我尝试使用“google.com”,用于 Url,端口为“80”。

我尝试了很多网址( http ://google.com、www.google.com、http: //www.google.fr ),但我没有连接。

我看过很多网络教程,我注意到它们不是 MSDN 教程中的 DNS Resolve,有问题吗?

有任何想法吗?

4

2 回答 2

2

您应该将SocketAsyncEventArgs.RemoteEndPoint设置为DnsEndPoint的实例;这是你目前正在做的吗?

你可以在这里查看样品!

于 2012-04-05T10:57:08.260 回答
0

试试这个。

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
socket.SetNetworkRequirement(NetworkSelectionCharacteristics.NonCellular);
string serverName = "www.google.com";
int portNumber = 80;
DnsEndPoint hostEntry = new DnsEndPoint(serverName, portNumber);
SocketAsyncEventArgs socketEventArg = new SocketAsyncEventArgs();
socketEventArg.RemoteEndPoint = hostEntry;
socketEventArg.UserToken = socket;
socketEventArg.Completed += socketEventArg_Completed;
// Make an asynchronous Connect request over the socket.
socket.ConnectAsync(socketEventArg);

    void socketEventArg_Completed(object sender, SocketAsyncEventArgs e)
    {
        Socket socket = e.UserToken as Socket;
        if (e.SocketError == SocketError.Success)
        {
        }
    }
于 2013-07-24T09:40:33.303 回答