Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.92/50: Рейтинг темы: голосов - 50, средняя оценка - 4.92
7 / 15 / 0
Регистрация: 08.03.2011
Сообщений: 100
1

Клиент-серверное приложение

16.09.2011, 22:18. Показов 10036. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Здравствуйте, есть задача написать простенькое клиент-серверное приложение на Silverlight или WPF которое перкидывает файлы с клиента на сервер....на чем будет эффективнее??? в чем заключаются основные проблемы при разработке, и может быть у кого нибудь есть исходники)
1
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.09.2011, 22:18
Ответы с готовыми решениями:

Клиент-серверное приложение
Задание: Используя WPF, создать клиент-серверное приложение для удаленного мониторинга и...

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

Клиент-серверное приложение
Клиент-серверное приложение между процессов с помощью именованых каналов Здравствуйте. Тут...

клиент-серверное приложение
собственно проблема заключается в том, что при запуске клиента, и нажатии на кнопку (отправление...

4
101 / 86 / 6
Регистрация: 08.04.2010
Сообщений: 169
17.09.2011, 13:07 2
http://stackoverflow.com/quest... ile-server
0
7 / 15 / 0
Регистрация: 08.03.2011
Сообщений: 100
18.09.2011, 22:47  [ТС] 3
Нашел исходники простого чата с клиент-серверной архитектурой, че то никак вникнуть не могу....

Клиент
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
using System;
using System.IO;
using System.Net;
using System.Threading;
using System.Net.Sockets;
using System.Collections.Generic;
 
namespace Net
{
    /// Событие при передаче данных от сервера клиенту.
    /// <param name="client">Клиент, который получает данные</param>
    public delegate void ClienReciveData(Client client);
    /// Клиент.
    public class Client : IDisposable
    {
        /// <summary>
        /// Скорость проверки полученых данных.
        public static int TimeOutUpdate = 25;
        /// Имя клиента.
        internal string name;
        /// Клиент.
        internal TcpClient client;
        /// Запись данных.
        internal BinaryWriter writer;
        /// Чтение данных.
        internal BinaryReader reader;
        /// Поток проверки полученных данных.
        internal Thread ThreadReciveData;
        /// Связь установленна?
        internal bool isConnect = false;
        /// <summary>
        /// Имя сервера.
        internal string serverName = "";
        /// Объем полученных данных.
        int oldReciveDataSize = 0;
        /// Событие о приеме данных.
        public ClienReciveData ReciveData;
        public Client(string name)
        {
            this.name = name;
            client = new TcpClient();
            ThreadReciveData = new Thread(new ThreadStart(_ThreadReciveData));
        }
        /// Соединение с сервером.
        /// <param name="ip">IP сервера</param>
        /// <param name="port">Порт сервера</param>
        /// <returns>Успех выполнения операции</returns>
        public bool Connect(IPAddress ip, int port)
        {
            if (isConnect == true) return false;
            try
            {
                client.Connect(ip, port);
                writer = new BinaryWriter(client.GetStream());
                reader = new BinaryReader(client.GetStream());
                writer.Write(name);
                Thread.Sleep(50);
                serverName = reader.ReadString();
                ThreadReciveData.Start();
                isConnect = true;
                return true;
            }
            catch
            {
                isConnect = false;
                return false;
            }
        }
        /// Поток проверки полученых данных.
        void _ThreadReciveData()
        {
            while (true)
            {
                if (client.Available == 0) oldReciveDataSize = 0;
                if (client.Available > oldReciveDataSize)
                {
                    oldReciveDataSize = client.Available;
                    if (ReciveData != null) ReciveData.Invoke(this);
                }
 
                Thread.Sleep(TimeOutUpdate);
            }
        }
        /// Имя.
        public string Name
        {
            get
            {
                return name;
            }
        }
        /// Чтение данных от сервера.
        public BinaryReader Reader
        {
            get
            {
                return reader;
            }
        }
        /// Передача данных серверу.
        public BinaryWriter Writer
        {
            get
            {
                return writer;
            }
        }
  /// Разрушить объект.
        public void Dispose()
        {
            try
            {
                client.EndConnect(null);
                ThreadReciveData.Abort();
            }
            catch
            {
            }
        /// Соединение открыто?
        public bool IsConnect
        {
            get
            {
                return isConnect;
            }
        }
        /// Есть связь с сервером?
        public bool ServerEnabled
        {
            get
            {
                return client.Connected;
            }
        }
        /// Получить имя сервера.
        public string ServerName
        {
            get
            {
                return serverName;
            }
        }
    }
}
Сервер
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
using System;
using System.IO;
using System.Net;
using System.Threading;
using System.Net.Sockets;
using System.Collections.Generic;
 
namespace Net
{
    /// <summary>
    /// Событие при подключении клиента к серверу.
    /// </summary>
    /// <param name="client">Клиент, который совершил подключение</param>
    public delegate void ServerClientJoint(Client client);
    /// <summary>
    /// Событие при передаче данных серверу от клиента.
    /// </summary>
    /// <param name="client">Клиент, который передал данные</param>
    public delegate void ServerReciveData(Client client);
 
    /// <summary>
    /// Сервер.
    /// </summary>
    public class Server : IDisposable
    {
        /// <summary>
        /// Имя сервера.
        /// </summary>
        string name;
        /// <summary>
        /// Сервер.
        /// </summary>
        TcpListener server;
        /// <summary>
        /// Поток приема клиентов.
        /// </summary>
        Thread ThreadAcceptSocket;
        /// <summary>
        /// Сервер запущен?
        /// </summary>
        bool isStarted = false;
        /// <summary>
        /// Список клиентов.
        /// </summary>
        public List<Client> Clients;
        /// <summary>
        /// Делегат присоединения клиентов.
        /// </summary>
        public ServerClientJoint ClientJoint;
        /// <summary>
        /// Прием данных от клиентов.
        /// </summary>
        public ServerReciveData ReciveData;
        /// <summary>
        /// Создать сервер.
        /// </summary>
        /// <param name="name">Имя</param>
        /// <param name="ip">IP</param>
        /// <param name="port">Порт</param>
        public Server(String name, IPAddress ip, int port)
        {
            this.name = name;
            server = new TcpListener(ip, port);
            Clients = new List<Client>();
            ThreadAcceptSocket = new Thread(new ThreadStart(_ThreadAcceptSocket));         
        }
        /// <summary>
        /// Запустить сервер.
        /// </summary>
        public bool Start()
        {
            if (isStarted == true) return false;
            try
            {
                server.Start();
                ThreadAcceptSocket.Start();
                isStarted = true;
                return true;
            }
            catch
            {
                isStarted = false;
                return false;
            }
        }
        /// <summary>
        /// Остановить сервер.
        /// </summary>
        public void Dispose()
        {
            try
            {
                server.Stop();
                ThreadAcceptSocket.Abort();
                for (int n = 0; n < Clients.Count; n++)
                {
                    Clients[n].Dispose();
                }
            }
            catch
            {
            }
        }
        /// <summary>
        /// Поток приема клиентов.
        /// </summary>
        void _ThreadAcceptSocket()
        {
            while (true)
            {
                Client newC = new Client("");
                newC.client = server.AcceptTcpClient();
                newC.reader = new BinaryReader(newC.client.GetStream());
                newC.writer = new BinaryWriter(newC.client.GetStream());
                Thread.Sleep(25);
                newC.name = newC.reader.ReadString();
                newC.writer.Write(name);
                newC.ReciveData += new ClienReciveData(ClientResiveData);
                Clients.Add(newC);
                newC.ThreadReciveData.Start();
                if (ClientJoint != null) ClientJoint.Invoke(newC);
            }
        }
        /// <summary>
        /// Прием данных от клиентов.
        /// </summary>
        /// <param name="client"></param>
        void ClientResiveData(Client client)
        {
            if (ReciveData != null) ReciveData.Invoke(client);
        }
        /// <summary>
        /// Получить клиента.
        /// </summary>
        /// <param name="name">Имя клиента</param>
        /// <returns>Клиент, или null - если имя не найдено</returns>
        public Client GetClient(string name)
        {
            for (int n = 0; n < Clients.Count; n++)
            {
                if (Clients[n].name == name) return Clients[n];
            }
 
            return null;
        }
        /// <summary>
        /// Сервер запущен?
        /// </summary>
        public bool IsStarted
        {
            get
            {
                return isStarted;
            }
        }
    }
}
есть два станционарных компа , подключенных к одной wi-fi сети...можно в таких условиях проверить работоспособность чата ?или может лучше попробовать установить виртуальную машину на один комп?

Добавлено через 5 часов 15 минут
Блин, товарищи програмисты... проблема то нубская....разъясните пожалуйста че к чему....
1
1 / 1 / 0
Регистрация: 01.03.2010
Сообщений: 26
19.09.2011, 01:29 4
Можно. Особенно просто будет если у обоих компов есть инет.
0
208 / 138 / 15
Регистрация: 28.04.2011
Сообщений: 389
19.09.2011, 12:00 5
можно даже и без виртуальной машины и интернета просто запусти сервер на localhost и пару клиентов

http://www.codeproject.com/KB/WCF/WCFWPFChat.aspx

простенький чат если не вдаватся в интерфейс на аватарки и drag'n'drop, я после прочтения гайда за пару часов написал похожий и никаких вопросов не возникло
0
19.09.2011, 12:00
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
19.09.2011, 12:00
Помогаю со студенческими работами здесь

Клиент-серверное приложение
Заинтересовался написанием клиент-серверных приложений, с чего начать? что написать? есть ли...

Закрывается клиент-серверное приложение
Здравствуйте, делаю что то типа клиен-сервера. Использую сокеты. При подключении с клиента на...

Асинхронное клиент серверное приложение
Всем доброго времени суток, а так же спасибо всем кто загляну и не прошёл мимо. Сразу...

Клиент-серверное приложение - проблемы с кодировкой
Всем добрый день. В общем есть одна игра,для нее я реализовал клиент,после того как я успешно...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru