Здесь курят мануал.

Добро пожаловать на Пыху!

Логин:
Пароль:
 

Нет прописки? Зарегистрируйся!

Новости

Пыха переехала на новый сервер, ура!

Краснодарское время: 24 Май, 2012, 06:47:04

Страниц: 1 [2] 3
Печать
Автор Тема: C# №3: Работа с сетью. Sockets.  (Прочитано 17740 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Frozzeg    ↓ 
06 Январь, 2011, 01:33:56
НЕ ХУЕТА! ХУЕТА!

Группа: Санитары

Карма: 92
Сообщений: 5497
Сила слова: 1.67

ебаный стыд
Записан

Эксперт — это человек, который в узкой области допустил все возможные ошибки. © Нильс Бор.
Отложить на завтра — значит впасть в рекурсию. © Frozzeg
Butcher    ↓ 
16 Февраль, 2011, 12:23:14 , спустя 41 день 10 часов 49 минут 18 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 10
Сила слова: 0

Здравствуйте. Может кто нить вытаскивал письма с ящика?. На php написать подобное не составило труда, но в шарпе не получается. Во-первых, присоединиться получилось только рамблеровскому серваку (к тому, к котрому надо и в частности маил.ру ошибка - CURL_CUIDNT_CONNECT). Код:
 
Easy.WriteFunction rf = new Easy.WriteFunction(OnWriteData);
 
easy.SetOpt(CURLoption.CURLOPT_URL, "pop.rambler.ru");
easy.SetOpt(CURLoption.CURLOPT_USERPWD, login + ":" + passwd);
easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, rf); // записываю результат в буфер
 

public static Int32 OnWriteData(Byte[] buf, Int32 size, Int32 nmemb, Object extraData)  // функцию тупо взял с инета
{
SockBuff = SockBuff + System.Text.Encoding.UTF8.GetString(buf);
return size * nmemb;
}
 
Результат на скрине..
 
Вооот, т.е. я получил html-код страницы, а как бы получить содержимое письма??))), наверн надо по другому в буфер инфу класть?


* Результат.jpg (24.79 Кб, 689x169 - просмотрено 420 раз.)

* .jpg (24.79 Кб, 689x169 - просмотрено 420 раз.)
Записан
Butcher    ↓ 
16 Февраль, 2011, 12:28:19 , спустя 5 минут 5 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 10
Сила слова: 0

Ах да, забыл сказать, работаю c libcurl..
Записан
Rotten    ↓ 
17 Февраль, 2011, 11:55:53 , спустя 23 часа 27 минут 34 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 9
Сообщений: 2086
Сила слова: 0.43

бля, пиздец..
методы начинаются с большой буквы.. это только в си шарп так)?
Записан

Жизнь слишком коротка чтобы тратить ее на бестолковое внимание троллям, мудакам, задротам и прочим отбросам общества...
Frozzeg    ↓ 
17 Февраль, 2011, 12:25:54 , спустя 30 минут 1 секунду
НЕ ХУЕТА! ХУЕТА!

Группа: Санитары

Карма: 92
Сообщений: 5497
Сила слова: 1.67

пиздец это когда наоборот
Записан

Эксперт — это человек, который в узкой области допустил все возможные ошибки. © Нильс Бор.
Отложить на завтра — значит впасть в рекурсию. © Frozzeg
Butcher    ↓ 
17 Февраль, 2011, 04:06:53 , спустя 3 часа 40 минут 59 секунд
НЕ ХУЕТА! ХУЕТА!

Карма: 0
Сообщений: 10
Сила слова: 0

Кароче, забил на cURL, через сокеты все получается быстрее).
Записан
Rotten    ↓ 
17 Февраль, 2011, 06:20:52 , спустя 2 часа 13 минут 59 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Адекваты

Карма: 9
Сообщений: 2086
Сила слова: 0.43

Java
"test".isEmpty();
такое в сишарпе тоже возможно?
Записан

Жизнь слишком коротка чтобы тратить ее на бестолковое внимание троллям, мудакам, задротам и прочим отбросам общества...
Frozzeg    ↓ 
17 Февраль, 2011, 06:23:30 , спустя 2 минуты 38 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Санитары

Карма: 92
Сообщений: 5497
Сила слова: 1.67

нет
Записан

Эксперт — это человек, который в узкой области допустил все возможные ошибки. © Нильс Бор.
Отложить на завтра — значит впасть в рекурсию. © Frozzeg
krasun    ↓ 
19 Февраль, 2011, 12:32:40 , спустя 1 день 6 часов 9 минут 10 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи
Группа: Джедаи

Карма: 41
Сообщений: 1379
Сила слова: 2.97

такое в сишарпе тоже возможно?
Да. И можно даже так 1.ToString() или "some".IndexOf("s").
Записан
Frozzeg    ↓ 
19 Февраль, 2011, 01:20:02 , спустя 12 часов 47 минут 22 секунды
НЕ ХУЕТА! ХУЕТА!

Группа: Санитары

Карма: 92
Сообщений: 5497
Сила слова: 1.67

ололо, а нахуй это нужно? я думал это типа доступ к объекту по его названию
Записан

Эксперт — это человек, который в узкой области допустил все возможные ошибки. © Нильс Бор.
Отложить на завтра — значит впасть в рекурсию. © Frozzeg
krasun    ↓ 
19 Февраль, 2011, 01:36:30 , спустя 16 минут 28 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Джедаи
Группа: Джедаи

Карма: 41
Сообщений: 1379
Сила слова: 2.97

Frozzeg, все в .net - объекты, даже литералы. Мне если и доводилось так писать, так разве, что бы "сговнять" или просто по-быстрому, например, "".PadLeft('0', 5). А так больше случаев не знаю.  
 
Записан
Maxim    ↓ 
05 Май, 2012, 09:26:39 , спустя 441 день 6 часов 50 минут 9 секунд
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 2
Сила слова: 0

Подскажите, когда создаем сервер, форму надо создавать??? Так же при создании клиента скажите нужна форма????
Записан
Frozzeg    ↓ 
07 Май, 2012, 04:47:37 , спустя 1 день 19 часов 20 минут 58 секунд
НЕ ХУЕТА! ХУЕТА!

Группа: Санитары

Карма: 92
Сообщений: 5497
Сила слова: 1.67

все на формах
Записан

Эксперт — это человек, который в узкой области допустил все возможные ошибки. © Нильс Бор.
Отложить на завтра — значит впасть в рекурсию. © Frozzeg
Maxim    ↓ 
07 Май, 2012, 10:04:09 , спустя 5 часов 16 минут 32 секунды
НЕ ХУЕТА! ХУЕТА!


Карма: 0
Сообщений: 2
Сила слова: 0

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
 

namespace Server
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        
        // Здесь будет хранится статус сервера
        bool isServerRunning;
        // Здесь будет список наших клиентов
        private Hashtable clients;
        // Это сокет нашего сервера
        Socket listener;
        // Порт, на котором будем прослушивать входящие соединения
        int port = 1991;
        // Точка для прослушки входящих соединений (состоит из адреса и порта)
        IPEndPoint Point;
        // Список потоков
        private List<Thread> threads = new List<Thread>();
 
        private void ServerStart()
        {
            clients = new Hashtable(30);
            isServerRunning = true;
            listener = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
            // Определяем конечную точку, IPAddress.Any означает что наш сервер будет принимать входящие соединения с любых адресов
            Point = new IPEndPoint(IPAddress.Any, port);
            // Связываем сокет с конечной точкой
            listener.Bind(Point);
            // Начинаем слушать входящие соединения
            listener.Listen(10);
 
            SocketAccepter();
        }
 
        private void SocketAccepter()
        {
            // Запускаем цикл в отдельном потоке, чтобы приложение не зависло
            Thread th = new Thread(delegate()
            {
                while (isServerRunning)
                {
                    // Создаем новый сокет, по которому мы сможем обращаться клиенту
                    // Этот цикл остановится, пока какой-нибудь клиент не попытается присоединиться к серверу
                    Socket client = listener.Accept();
                    // Теперь, обратившись к объекту client, мы сможем отсылать и принимать пакеты от последнего подключившегося пользователя.
                    // Добавляем подключенного клиента в список всех клиентов, для дальнейшей массовой рассылки пакетов
                    clients.Add(client, "");
                    // Начинаем принимать входящие пакеты
                    Thread thh = new Thread(delegate()
                    {
                        MessageReceiver(client);
                    });
                    thh.Start();
                }
            });
            // Приведенный выше цикл пока что не работает, запускаем поток. Теперь цикл работает.
            th.Start();
            threads.Add(th);
        }
 
        private void MessageReceiver(Socket r_client)
        {
            // Для каждого нового подключения, будет создан свой поток для приема пакетов
            Thread th = new Thread(delegate()
            {
                while (isServerRunning)
                {
                    try
                    {
                        // Сюда будем записывать принятые байты
                        byte[] bytes = new byte[1024];
                        // Принимаем
                        r_client.Receive(bytes);
                        if (bytes.Length != 0)
                        {
                            // Отсылаем принятый пакет от клиента всем клиентам
                            foreach (Socket s_client in clients.Keys)
                            {
                                MessageSender(s_client, bytes);
                            }
                        }
                    }
                    catch { }
                }
            });
            th.Start();
            threads.Add(th);
        }
 
        private void MessageSender(Socket c_client, byte[] bytes)
        {
            try
            {
                // Отправляем пакет
                c_client.Send(bytes);
 
            }
            catch { }
        }
    }
}
 
при создании сервака, выдает ошибку: Не удалось найти имя типа или пространство имен "Hashtable"(пропущена директива using или ссылка на сборку?)
Записан
phpdude    ↓ 
07 Май, 2012, 10:05:21 , спустя 1 минуту 12 секунд
НЕ ХУЕТА! ХУЕТА!

я - ЭМО
Группа: в ухо

Карма: 344
Сообщений: 20781
Сила слова: 1.66

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Net.Sockets;
using System.Threading;
и где туит Hashtable? вс верно ругается
Записан

забанен. могу забанить других, пишите в личку
BEER. Helping ugly people have sex since 1862.
Страниц: 1 [2] 3
Печать
 

Перейти в:  

Этот топик скрыли: NRG, adw0rd, Status