Sembra facile realizzare un semplice client tcp/ip: se ci si limita all'apertura di una connessione e la gestione delle eccezioni lo è certamente. Altra complessità è implementare un protocollo.
Volevo realizzare un semplice port scanner, cioè aprire una porta TCP/IP per verificarne la raggiungibilità.
Il problema è che non è possibile impostare il timeout. Ecco il codice di una semplice Console Application.
using System;
using System.Net;
using System.Net.Sockets;
using System.Threading;
namespace tcpopenport
{
internal class Program
{
private static void Main(string[] args)
{
string _host = "85.18.94.43";
int _port = 9000;
int _timeout = 0;
IPEndPoint iep = new IPEndPoint(IPAddress.Parse(_host), _port);
TcpClient tcpclient = new TcpClient();
tcpclient.ExclusiveAddressUse = true;
tcpclient.SendTimeout = _timeout;
tcpclient.ReceiveTimeout = _timeout;
try
{
tcpclient.Connect(_host, _port);
Console.WriteLine("Connesso!");
}
catch (Exception ex)
{
Console.WriteLine("Errore: " + ex.Message);
}
Console.ReadLine();
}
}
}
Nella documentazione è riportato che il valore da impostare è in millisecondi, ma deve esserci qualche errore negli esempi, visto che sembra che sia impostato in secondi: http://msdn2.microsoft.com/en-us/library/system.ne...