Форум → Программирование → Больше языков → C/C++ и C# → C# №3: Работа с сетью. Sockets.
C# №3: Работа с сетью. Sockets.
Страницы: ← Предыдущая страница • Следующая страница →
-
Янв. 6, 2011, 1:33 д.п., спустя 543 дня 8 часов 20 минут
ебаный стыдYou can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
Фев. 16, 2011, 12:23 п.п., спустя 41 день 10 часов 49 минут
Здравствуйте. Может кто нить вытаскивал письма с ящика?. На 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-код страницы, а как бы получить содержимое письма??))), наверн надо по другому в буфер инфу класть? -
-
Фев. 17, 2011, 11:55 д.п., спустя 23 часа 27 минут 34 секунды
бля, пиздец..
методы начинаются с большой буквы.. это только в си шарп так)? -
Фев. 17, 2011, 12:25 п.п., спустя 30 минут 1 секунду
пиздец это когда наоборотYou can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
Фев. 17, 2011, 4:06 п.п., спустя 3 часа 40 минут 59 секунд
Кароче, забил на cURL, через сокеты все получается быстрее). -
Фев. 17, 2011, 6:20 п.п., спустя 2 часа 13 минут 59 секунд
"test".isEmpty();
такое в сишарпе тоже возможно? -
Фев. 17, 2011, 6:23 п.п., спустя 2 минуты 38 секунд
нетYou can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
Фев. 19, 2011, 12:32 д.п., спустя 1 день 6 часов 9 минут
такое в сишарпе тоже возможно?
Да. И можно даже так 1.ToString() или "some".IndexOf("s"). -
Фев. 19, 2011, 1:20 п.п., спустя 12 часов 47 минут 22 секунды
ололо, а нахуй это нужно? я думал это типа доступ к объекту по его названиюYou can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
Фев. 19, 2011, 1:36 п.п., спустя 16 минут 28 секунд
Frozzeg, все в .net - объекты, даже литералы. Мне если и доводилось так писать, так разве, что бы "сговнять" или просто по-быстрому, например, "".PadLeft('0', 5). А так больше случаев не знаю. -
Май 5, 2012, 9:26 п.п., спустя 441 день 6 часов 50 минут
Подскажите, когда создаем сервер, форму надо создавать??? Так же при создании клиента скажите нужна форма???? -
Май 7, 2012, 4:47 п.п., спустя 1 день 19 часов 20 минут
все на формахYou can be anything you want to be. Just turn yourself into anything you think that you could ever be. -
Май 7, 2012, 10:04 п.п., спустя 5 часов 16 минут 32 секунды
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 или ссылка на сборку?) -
Май 7, 2012, 10:05 п.п., спустя 1 минуту 12 секунд
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? вс верно ругаетсяСапожник без сапог
Страницы: ← Предыдущая страница • Следующая страница →
Пожалуйста, авторизуйтесь, чтобы написать комментарий!