Note: This is not the complete source code--just the main source file.
You can download the full source (with include files) from our sample code archive by clicking on the diskette icons.

AspTcpQuery.asp

<%@ EnableSessionState=False LANGUAGE="VBSCRIPT" %>
<%
'// AspTcpQuery sample script
'//
'// Demonstrates use of HexTcpQuery and HexLookup
'//
'// Copyright (C) 1998 Hexillion Technologies. All rights reserved.
'//
Option explicit
Response.Buffer = true
%>
<!-- #include file="AuxFuncs.asp" -->

<html>

<head>
<title>Hexillion AspTcpQuery sample</title>
</head>

<body bgcolor="#FFFFFF" text="#000000" vlink="#808080" link="#0000FF">

<%
const sUserAgent = "User-Agent: AspTcpQuery sample (http://www.hexillion.com/)"
dim oLkup, oTcpq, sServer, sQuery, lService, sServices, l

sServices = Array( "whois", "finger", "HTTP", "echo" )

set oLkup = Server.CreateObject( "Hexillion.HexLookup" )
set oTcpq = Server.CreateObject( "Hexillion.HexTcpQuery" )

sServer = Request( "server" )
sQuery = request( "query" )

if IsEmpty( request( "service" ) ) then
	lService = -1
else
	lService = CLng( request( "service" ) )
end if

if "" = sServer then sServer = "www.yahoo.com"
if "" = sQuery and lService < 0 then sQuery = "GET / HTTP/1.0"
%>

<script language="JavaScript">
<!--hide this script from old browsers

// This function provides working default
// queries when the user selects a service

function InitFields( lService )
	{
	var sServer, sQuery;

	if( 0 == lService )
		{
		sServer = "whois.networksolutions.com";
		sQuery = "yahoo.com";
		}

	else if( 1 == lService )
		{
		sServer = "idsoftware.com";
		sQuery = "johnc";
		}

	else if( 2 == lService )
		{
		sServer = "www.yahoo.com";
		sQuery = "GET / HTTP/1.0";
		}

	else
		{
		sServer = "www.cs.unc.edu";
		sQuery = "Text to be echoed";
		}

	window.document.tcpquery.server.value = sServer;
	window.document.tcpquery.query.value = sQuery;
	}

//-->
</script>

<table cellpadding="5" width="100%"><tr>
<td colspan="2" bgcolor="#E1EFFF"><font face="Arial" size="5"><strong>AspTcpQuery sample</strong></font>
</td></tr>
<tr>
<td valign="top" bgcolor="#E1EFFF">
<form name="tcpquery" method="POST" action="<%= request( "SCRIPT_NAME" ) %>">
	<table cellpadding="5">
		<tr><td align="right">service</td>
		<td>
<%
	dim lChecked
	if lService >= 0 then
		lChecked = lService
	else
		lChecked = 2  '// Default to HTTP
	end if

	for l = 0 to 3
		if l = lChecked then
			response.write "<input type=""radio"" value=""" & l & """ checked name=""service"" onClick=""InitFields( " & l & " )"">"
		else
			response.write "<input type=""radio"" value=""" & l & """ name=""service"" onClick=""InitFields( " & l & " )"">"
		end if
		response.write sServices( l ) & "&nbsp; "
	next
%>
		<tr><td align="right">server</td>
		<td><input type="text" name="server" size=27 value="<%= Server.HtmlEncode( sServer ) %>"></td></tr>
		<tr><td align="right">query</td>
		<td><input type="text" name="query" size="27" value="<%= Server.HtmlEncode( sQuery ) %>">
		<input type="submit" value="Go" name="B1"></td></tr>
	</table>
</form>
</td>

<td valign="top" bgcolor="#E1EFFF">
<table border="0" cellspacing="0" cellpadding="7">
<tr>
	<td colspan="2">powered by <b><a href="http://www.hexillion.com/software/" target="_top">HexGadgets</a></b>
	<br><font size="-1">
	<a href="http://www.hexillion.com/samples/view_src.asp?name=AspTcpQuery.asp" target="_blank">view source</a>
	&nbsp; |&nbsp; <a href="http://www.hexillion.com/samples/" target="_top">download</a>
	</font></td>
</tr>
<%
WriteLicenseRow "HexTcpQuery", oTcpq
WriteLicenseRow "HexLookup", oLkup
%>
</table>
</td>
</tr></table>

<%
if 0 <= lService and "" <> sServer then

    Dim lAddr, sResponse, vResponse
    
    Response.Flush

    '// Look up remote server IP address
	lAddr = oLkup.LookUp( sServer )
	if 0 = lAddr then
		Response.Write( "<p>Lookup of " & Server.HtmlEncode( sServer ) & " failed.</p>" )
	
	else
		response.write "<p>Querying <tt><strong>" & Server.HtmlEncode( sServer ) & " [" & oLkup.AddrToString( lAddr ) & "]</strong></tt>...</p>"
		response.Flush

		oTcpq.RemoteAddr = lAddr
		oTcpq.Timeout = 20000
    
		'// Set port and do query according to service selection
		select case lService
			case 0
				oTcpq.RemotePort = hexTcpqPortWhois
				sResponse = oTcpq.Query( sQuery & vbcrlf )

			case 1
				oTcpq.RemotePort = hexTcpqPortFinger
				sResponse = oTcpq.Query( sQuery & vbcrlf )

			case 2
				oTcpq.RemotePort = hexTcpqPortHttp
				sResponse = oTcpq.Query( sQuery & vbcrlf & _
				                         sUserAgent & vbcrlf & _
				                         "Host: " & sServer & vbcrlf & _
				                         vbcrlf )

			case else
				oTcpq.RemotePort = hexTcpqPortEcho
				sResponse = oTcpq.Query( sQuery )
		end select

		response.write "<p><strong>[begin response]</strong></p>"
		response.write "<pre>" & Server.HTMLEncode( sResponse ) & "</pre>"
		response.write "<p><strong>[end response]</strong></p>"

		if hexTcpqErrSuccess <> oTcpq.Error then
			response.write "<p>" & Server.HtmlEncode( GetTcpqErrorString( oTcpq.Error ) ) & "</p>"
		end if
    end If
end if
%>
</body>
</html>