Во-первых, почему вы пишете это, используя необработанные сокеты и меняя IOControl? Я попытался запустить ваш код в Vista, и он не будет работать, даже как администратор. Можете ли вы использовать более высокий уровень абстракции, например, вместо TcpClient?
Во-вторых, вам нужно отправить запрос, прежде чем вы получите ответ. Самый простой запрос, который вы можете отправить, это «GET / \ n», где \ n - символ новой строки.
Вот некоторый код, который вы могли бы использовать (метод Write также должен проверять возвращаемое значение, но для простоты это опущено):
using (TcpClient tcpClient = new TcpClient(strIP, 80))
{
using (Stream s = tcpClient.GetStream())
{
byte[] bytesToSend = Encoding.ASCII.GetBytes("GET /\n");
s.Write(bytesToSend, 0, bytesToSend.Length);
int bytes;
byte[] buffer = new byte[4096];
do
{
bytes = s.Read(buffer, 0, buffer.Length);
Console.WriteLine(Encoding.ASCII.GetString(buffer, 0, bytes));
} while (bytes > 0);
}
}