Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Распределённые приложения и сеть > Bind Port


Автор: ExMike 5.3.2008, 17:05
Можно ли как-то забиндить порт и потом коннектится к этому порту телнетом и работать как со своей коммандной строкой?
Если такое возможно,скажите в какую сторону копать или же, если есть сорцы дайте,пожалуйста.

Автор: Freak_FB 11.3.2008, 17:26
Можно, бинди. smile Просто нужно открыть сокет на прослушивание на определённом порту. И принимать входящие подключения.

Код

using System;
using System.Collections.Generic;
using System.Text;
using System.Net.Sockets;
using System.Net;

namespace EchoServer
{
    class ChatClient : TcpClient
    {
        private TcpClient _client;
        private string _clientIP;

        private byte[] data;

        public ChatClient(TcpClient client)
        {
            _client = client;
            _clientIP = client.Client.RemoteEndPoint.ToString();

            data = new byte[_client.ReceiveBufferSize];

            _client.GetStream().BeginRead(data, 0,
                Convert.ToInt32(_client.ReceiveBufferSize),
                ReceiveMessage, null);
        }

        public void ReceiveMessage(IAsyncResult ar)
        {
            int bytesRead;

            try
            {
                lock(_client.GetStream())
                {
                    bytesRead = _client.GetStream().EndRead(ar);
                }

                if (bytesRead == 0)
                {
                    Console.WriteLine("Client left");
                    return;
                }

                string messageReceived;
                messageReceived = Encoding.ASCII.GetString(data, 0, bytesRead);
                Console.Write(messageReceived);

                lock (_client.GetStream())
                {
                    _client.GetStream().BeginRead(data, 0,
                        Convert.ToInt32(_client.ReceiveBufferSize),
                        ReceiveMessage, null);
                }

            }
            catch(Exception)
            {
            }
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            IPAddress localAddr = IPAddress.Parse("10.0.0.216");
            TcpListener listener = new TcpListener(localAddr, 123);

            listener.Start();

            ChatClient client = new ChatClient(listener.AcceptTcpClient());

            Console.ReadLine();
        }
    }
}

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)