Форум программистов, компьютерный форум, киберфорум
C# .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 12

Добиваю клиент сервер

03.11.2011, 18:45. Показов 1374. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Очень шикарный пример найден у вас на форуме

Сервер
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
using System;
using System.Net;
using System.Net.Sockets;
using System.Text;
using System.Threading;
namespace Server
{
    class Server
    {
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        public static extern bool SetProcessWorkingSetSize(IntPtr handle, int minimumWorkingSetSize, int maximumWorkingSetSize);
        const int port = 9051;
        public const int bufferSize = 512;
        static void Main(string[] args)
        {
            SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
            TcpListener Listener = new TcpListener(IPAddress.Any, port);
            Listener.Start();
            while (true)
            {
                while (!Listener.Pending())
                {
                    Thread.Sleep(1000);
                }
                Connection NewConnection = new Connection(Listener);
                ThreadPool.QueueUserWorkItem(new WaitCallback(NewConnection.StartRead));
            }
        }
    }
    class Connection
    {
        TcpListener Listener;
        TcpClient Client;
        NetworkStream Stream;
        static int NumConnections = 0;
        public Connection(TcpListener L)
        {
            try
            {
                NumConnections++;
                Console.WriteLine("{0} active connections", NumConnections.ToString());
                Listener = L;
                Client = Listener.AcceptTcpClient();
                Stream = Client.GetStream();
            }
            catch
            {
                Stream.Close();
                Client.Close();
                Thread.CurrentThread.Abort();
            }
        }
        public void StartRead(object obj)
        {
            try
            {
                while (true)
                {
                    byte[] byteData = new byte[Server.bufferSize];
                    int bytesRead = Stream.Read(byteData, 0, byteData.Length);
                    string InputData = Encoding.Default.GetString(byteData, 0, bytesRead);
                    Console.WriteLine(InputData);
                }
            }
            catch
            {
                Stream.Close();
                Client.Close();
                Thread.CurrentThread.Abort();
            }
        }
    }
}
Клиент
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
using System;
using System.Text;
using System.Net.Sockets;
using System.Threading;
namespace Client
{
    class Client
    {
        [System.Runtime.InteropServices.DllImport("kernel32.dll")]
        public static extern bool SetProcessWorkingSetSize(IntPtr handle, int minimumWorkingSetSize, int maximumWorkingSetSize);
        const int bufferSize = 512;
        static byte[] byteData = new byte[bufferSize];
        static NetworkStream Stream;
        static System.Net.IPAddress IP = System.Net.IPAddress.Parse("127.0.0.1");
        const int port = 9051;
        static void Main(string[] args)
        {
            SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
        tryConnect:
            TcpClient tcpClient = new TcpClient();
            try
            {
                tcpClient.Connect(IP, port);
                Stream = tcpClient.GetStream();
                while (true)
                {
                    Console.WriteLine(DateTime.Now.ToString());
                    Write(DateTime.Now.ToString());
                    Thread.Sleep(5000);
                }
            }
            catch
            {
                Console.WriteLine("[X] Server not available!");
                Thread.Sleep(3000);
                goto tryConnect;
            }
        }
        static void Write(string s)
        {
            try
            {
                byteData = new byte[bufferSize];
                byteData = Encoding.Default.GetBytes(s);
                Stream.Write(byteData, 0, byteData.Length);
                Thread.Sleep(100);
            }
            catch
            {
                Console.WriteLine("[X] Server not available!");
            }
        }
    }
}
Помогите тож самое перевести в WinForm's Дружу просто с С# пару месяцев оч нада плиз... Желательно примером....

Добавлено через 4 часа 43 минуты
Мож подскажете примером.... Пробовал делать так переделать сервер


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
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 WindowsFormsServer
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
[System.Runtime.InteropServices.DllImport("kernel32.dll")]
public static extern bool SetProcessWorkingSetSize(IntPtr handle, int minimumWorkingSetSize, int maximumWorkingSetSize);
const int port = 9051;
class Server
{
public const int bufferSize = 512;
}
private void button1_Click(object sender, EventArgs e)
{
SetProcessWorkingSetSize(System.Diagnostics.Process.GetCurrentProcess().Handle, -1, -1);
TcpListener Listener = new TcpListener(IPAddress.Any, port);
Listener.Start();
while (true)
{
while (!Listener.Pending())
{
Thread.Sl eep(1000);
}
Connection NewConnection = new Connection(Listener);
ThreadPool.QueueUserWorkItem(new WaitCallback(NewConnection.StartRead));
}
}
 
class Connection
{
TcpListener Listener;
TcpClient Client;
NetworkStream Stream;
static int NumConnections = 0;
public Connection(TcpListener L)
{
try
{
NumConnections++;
//111
Console.WriteLine("{0} active connections", NumConnections.ToString());
Listener = L;
Client = Listener.AcceptTcpClient();
Stream = Client.GetStream();
}
catch
{
Stream.Close();
Client.Close();
Thread.CurrentThread.Abort();
}
}
public void StartRead(object obj)
{
try
{
while (true)
{
byte[] byteData = new byte[Server.bufferSize];
int bytesRead = Stream.Read(byteData, 0, byteData.Length);
string InputData = Encoding.Default.GetString(byteData, 0, bytesRead);
//111
Console.WriteLine(InputData);
}
}
catch
{
Stream.Close();
Client.Close();
Thread.CurrentThread.Abort();
}
}
}
}
}
Он запустился (сервер) но чтото невыводит в текстбокс1 текст.... где //111 вообще не видит текстбокс1 С клиентом та же беда...
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.11.2011, 18:45
Ответы с готовыми решениями:

Клиент-сервер: Как определить, что клиент отключился?
Привет. Есть клиент и сервер, при подключении клиента, на сервере создается класс, который содержит копию сокета и всякую инфу клиента, и...

Клиент-серверное приложение: как определить, что сервер/клиент не отвечает в течении определенного времени
Пишу клиент-серверное приложение. Использую TCPListener и TCPClient. Вопрос: как определить что сервер(клиент) не отвечает в течении...

Клиент-сервер. Клиент не принимает данные
Здравствуйте о светлейшие умы сего мира! Я работаю над одним проектом, а именно написание многопользовательской онлайн игры, и собственно...

5
44 / 44 / 6
Регистрация: 16.11.2010
Сообщений: 110
03.11.2011, 22:06
Посмотри эти проги, может подойдут...
Вложения
Тип файла: rar Example.rar (124.7 Кб, 33 просмотров)
0
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 12
04.11.2011, 00:22  [ТС]
Пример хороший только есть проблемка!!! Когда 2 клиент включаеш и соединяешся с сервером то сервер не принимает это соединение... только 1 соединение с 1 клиентом...
0
128 / 128 / 8
Регистрация: 24.11.2010
Сообщений: 237
04.11.2011, 06:26
тебе нужно асинхронное общение сервера с клиентами
1
0 / 0 / 0
Регистрация: 03.11.2011
Сообщений: 12
04.11.2011, 12:59  [ТС]
В верхнем примере сервер как раз таки и принимает входящие сообщения от нескольких пользователей (тест до 80+ подключейний) от и нада мне те 2 верхних примера перевести в винформ а не получается ибо в вин форм все висит и ничего не делается

Добавлено через 1 час 42 минуты
Вообщем все не то.... Вот мож в 2 слова обьяснить получится и предложите примеры готовые на этот вариант...

Есть некая база данных (БД) и в фирме имеется около 100+ клиентов (КБД) которые коннектятся к базе данных и работают с ней. Идея такова... Когда 100+ юзеров запускают клиент(КБД) который работает с базой данных они запускают в паралельном патоке клиент(К) который каждые 60 сек шлет на сервер сообщения типа (60 секунд полет нормальный и свой логин и айпи). Соответственно перестал слать клиент (К) пакеты - значит интернета у юзера нету либо выключил клиент(КБД) который с БД работает. Далее руководство решает уволить кого нить из этих 100+ юзеров. Сервер который принимает сообщения от клиентов(К) посылает всем клиентам(К) сообщения если ты такойта (логин либ еще чтото) то выключить клиент(КБД) и сменить в БД пароль этого юзера. В связи с этим та мне и не подходят большенство примеров которые я видел:
- Либо коннектятся только 1 клиент как 2+ запустиш так труба начинается...
- Когда теряет клиент связь с сервером он вырубается...
- Когда потом после утери сигнала сигнал возвращается тоже куча проблем...
- Сервер теряет клиентов и после возвращения сигнала не может им ничего выслать...
- Реализация на консоле менее удобна для этого чем нежели в оконном режиме видеть список юзеров онлайн и видеть что кто шлет...
Вот такая пролемка... Нашел более менее подходящий пример (ВЫШЕ НА КОНСОЛЕ РЕАЛИЗОВАННЫЙ) в нем все нормально... И принимает сигналы от многих юзеров... И при потере сигнала возвращается когда соединение клиент продолжает все высылать.... НО ОНО НА КОНСОЛЕ МНЕ НА ВИН ФОРМЕ НАДА... А сам не осилю изменить...

Добавлено через 21 минуту
Цитата Сообщение от galexser Посмотреть сообщение
тебе нужно асинхронное общение сервера с клиентами
Прмер бы самый простой на винформе......
0
 Аватар для KingManiya
203 / 203 / 13
Регистрация: 14.10.2011
Сообщений: 227
05.11.2011, 10:28
Возможно и не правильно... Но вот то, что тебе нужно.
Технология клиент-сервер. Классы клиента и сервера. Обсуждение
НО этот код на VB.net. На С# проблем перевести сильно не будет. Вот например автоматический конвертер.
http://converter.foxtools.ru/

Клиенты могут подключатся, отключатся хоть когда. Для каждого нового клиента создается свой поток. Сервер может слать хоть кому сообщения, в любое время.
У клиента дополнительный поток, на прием данных с сервера. Может подключатся и отключатся хоть сколько раз.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.11.2011, 10:28
Помогаю со студенческими работами здесь

Клиент-Сервер. Удалённый сервер
Всем здравствуйте. Я заинтересовался написать клиент-сервер приложение. Написал я отдельную консольную программу сервера и клиента. Вот...

TCP-сервер и TCP-клиент. Клиент не находит файл.
Всем привет! Решил изучать передачу данных по сети и начал с освоения примера, приведённого в книге "Visual C# 2008. Базовый курс...

Зависает сервер при создании приложения типа клиент/сервер
Зависает сервер при создании приложения типа клиент/сервер using System; using System.Collections.Generic; using...

Как отправить json с клиента на сервер (клиент - прога на C#, сервер - файл PHP)
На хостинге есть файл php, как мне отправить к этому файлу json c помощью C# и как получить его с помощью php? А также как мне отправить,...

Клиент должен отправить файл на сервер. Сервер его обработать и отправить клиенту текст
Ребят подскажите как сделать: Клиент должен отправить файл на сервер. Сервер его обработать и отправить клиенту текст(1 строка). Как...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru