webForumDet fria alternativet

Får inte TcpClient att fungera...

.NET

2 svar · 272 visningar · startad av Josef

Medlem sedan mars 20023 561 inlägg
Frågan#1

Vad är det för fel på den här koden???
"Fel-raden":

if (tcpc.Connect("whois.networksolutions.com", 43) != 0)

Och hela koden:

using System;
using System.Net.Sockets;
using System.IO;
using System.Text;

namespace Presenting.CSharp
{
	public class WhoisLookup
	{
		public static bool Query(string strDomain, out string strWhoisInfo)
		{
			const int BUFFER_SIZE = 128;

			if ("" == strDomain)
				throw new ArgumentException("You must specify a domain-name.");

			TcpClient tcpc = new TcpClient();
			strWhoisInfo = "N/A";

			if (tcpc.Connect("whois.networksolutions.com", 43) != 0)
				return false;

			Stream s = tcpc.GetStream();

			strDomain += "\r\n";
			Byte[] bDomArr = Encoding.ASCII.GetBytes(strDomain.ToCharArray());
			s.Write(bDomArr, 0, strDomain.Length);

			Byte[] Buffer = new Byte[BUFFER_SIZE];
			StringBuilder strWhoisResponse = new StringBuilder(" ");

			int BytesRead = s.Read(Buffer, 0, BUFFER_SIZE);
			while (BytesRead != 0 )
			{
				strWhoisResponse.Append(Encoding.ASCII.GetString(Buffer, 0, BytesRead));
				BytesRead = s.Read(Buffer, 0, BUFFER_SIZE);
			}

			tcpc.Close();
			strWhoisInfo = strWhoisResponse.ToString();
			return true;
		}
	}
}

Och felmeddelandet:

Operator '!=' cannot be applied to operands of type 'void' and 'int'

All kod är efter en bok...

Medlem sedan mars 20007 896 inlägg
#2

TcpClient() är void och returnerar ingenting, alltså kan du inte jämföra den mot en nolla. Den kastar Exceptions däremot, ArgumentNullException och SocketException. Lägg in allt i ett try/catch-block istället.

...
                try {
			TcpClient tcpc = new TcpClient();
			strWhoisInfo = "N/A";

			tcpc.Connect("whois.networksolutions.com", 43)

			Stream s = tcpc.GetStream();

			strDomain += "\r\n";
			Byte[] bDomArr = Encoding.ASCII.GetBytes(strDomain.ToCharArray());
			s.Write(bDomArr, 0, strDomain.Length);

			Byte[] Buffer = new Byte[BUFFER_SIZE];
			StringBuilder strWhoisResponse = new StringBuilder(" ");

			int BytesRead = s.Read(Buffer, 0, BUFFER_SIZE);
			while (BytesRead != 0 )
			{
				strWhoisResponse.Append(Encoding.ASCII.GetString(Buffer, 0, BytesRead));
				BytesRead = s.Read(Buffer, 0, BUFFER_SIZE);
			}

			tcpc.Close();
			strWhoisInfo = strWhoisResponse.ToString();
			return true;
                    }
                    catch( Exception e ) {
                                               // Nåt gick fel
                    }
                    return false;

Typ.

Medlem sedan mars 20023 561 inlägg
#3

Som sagt, det är inte min kod men jag skall prova detta.
Tack :)

893 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
729 ms — deklarationer (db)
0 ms — hämta statistik (cache)
154 ms — hämta tråd, inlägg och bilagor (db)
736 ms — ändringar (db)