Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.07.2011, 01:45   #1
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
По умолчанию чтение чужого кода

Доброго времени суток.
Разбираюсь в чужом коде, возникло несколько вопросов.

Вопрос первый:
Код:
JS = Join.AcceptSocket();
....
LJSNS = new NetworkStream(JS);
....
LJSNS.Write(bdata, 0, count);
Будет ли последняя строчка отсылать данные через сокет?

Вопрос второй:
Код:
while (true)
{
Socket CS = Connect.AcceptSocket();
....
System.Threading.Thread ConnectThread = new System.Threading.Thread(SendToCSServer);
ConnectThread.Start();
}
а) Если в сокет ничего не пришло будет ли создан новый поток?
б) Сколько будет "жить" поток если в SendToCSServer только читаются данные пришедшие в сокет?
в) Нужно ли в SendToCSServer закрывать созданный поток?

В данное время программа после некоторого времени нормальной работы загружает процессор на 100%.
Как вы сформулируете вопрос так вам и ответят
xil вне форума Ответить с цитированием
Старый 21.07.2011, 03:07   #2
fenryr
Пользователь
 
Регистрация: 20.05.2010
Сообщений: 28
По умолчанию

>Будет ли последняя строчка отсылать данные через сокет?
Да, сразу вызывает метод сокета send с такими же данными
а,б,в - нужен полный код, чтобы прикинуть к чему эти вопросы
fenryr вне форума Ответить с цитированием
Старый 21.07.2011, 12:05   #3
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
По умолчанию

вот полный код

Код:
public static void listen()
{
       TcpListener Connect = new TcpListener(IPAddress.Any, 1111);
       Connect.Start();
       Console.WriteLine("Connect client started!");

       while (true)
       {
               Socket CS = Connect.AcceptSocket();

               Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.IP);
               sock.Connect("127.0.0.1", 444);

               RCSNS = new NetworkStream(sock);
               LCSNS = new NetworkStream(CS);

               System.Threading.Thread ConnectThread = new System.Threading.Thread(SendToCSServer);
               ConnectThread.Start();
               System.Threading.Thread ConnectThreadR = new System.Threading.Thread(RecieveToCSServer);
               ConnectThreadR.Start();
       }
}
Код:
public static void SendToCSServer()
{
       try
       {
       while (true)
       {
              byte[] bdata = new byte[1024];
              int count = LCSNS.Read(bdata, 0, 1024);
              RCSNS.Write(bdata, 0, count);
              Console.WriteLine("connect DataSended!");
              }
       }
       catch
       {
             Console.WriteLine("Cserver disconnected!");
       }
}

public static void RecieveToCSServer()
{
       try
       {
              while (true)
              {
                     byte[] bdata = new byte[1024];
                     int count = RCSNS.Read(bdata, 0, 1024);                 
                     LCSNS.Write(bdata, 0, count);
                     Console.WriteLine("connect DataREc!");
               }
       }
       catch
       {
               Console.WriteLine("Cserver disconnected!");
       }
}
первая функция принимает входящий запрос на сокет и создает два потока для приема и передачи данных
Как вы сформулируете вопрос так вам и ответят
xil вне форума Ответить с цитированием
Старый 21.07.2011, 14:14   #4
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
По умолчанию

с 2а разобрался
Код:
Socket CS = Connect.AcceptSocket();
на этой строчке выполнение программы приостанавливается и ожидаются входные данные.

непонятно, когда приходят данные на сокет создается два потока, в этих потоках бесконечные циклы (т.е. они не закрываются), а когда приходят еще данные на сокет создаются еще два потока или данные передаются в уже созданные потоки?
Как вы сформулируете вопрос так вам и ответят
xil вне форума Ответить с цитированием
Старый 21.07.2011, 17:48   #5
m0nax
Форумчанин
 
Аватар для m0nax
 
Регистрация: 25.09.2009
Сообщений: 525
По умолчанию

будут создаваться новые потоки каждый раз
m0nax вне форума Ответить с цитированием
Старый 21.07.2011, 18:05   #6
xil
Пользователь
 
Регистрация: 30.06.2009
Сообщений: 98
Радость

Спасибо за помощь, разобрался =)
Как вы сформулируете вопрос так вам и ответят
xil вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Чтение и запись в память чужого процесса dacorp Общие вопросы Delphi 0 13.01.2011 22:39
Чтение строки из TLabeledEdit чужого приложения. Baisangur Win Api 2 05.08.2010 23:01
Чтение, чтение и еще раз чтение Alex Cones Общие вопросы Delphi 3 07.06.2009 15:28
Можно помочь с анализом чужого кода ? Си sergey113 Помощь студентам 1 20.03.2009 13:19
Чтение машинного кода AndruXa Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 24.06.2008 19:01