Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
10 / 10 / 1
Регистрация: 10.02.2013
Сообщений: 92

Работа с сокетами

25.03.2013, 17:40. Показов 2313. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь освоить сетевое программирование. Была попытка создать простенькую программу - сервер, которая бы принимала и выводила сообщения от программы - клиента.
Вот мой код:
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
using System;
using System.ComponentModel;
using System.Data;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
 
using System.Net;
using System.Net.Sockets;
 
namespace WindowsFormsApplication1
{
    public partial class Form1 : Form
    {
        Socket sock = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
        Socket servSock = null;
        IPEndPoint Addr = null;
 
        public Form1()
        {
            InitializeComponent();
        }
 
        private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                toolStripStatusLabel1.Text = "Настройка Ip адресов и порта";
                Addr = new IPEndPoint(IPAddress.Any, 5300);
                sock.Bind(Addr); // Связываю сокет с локальной конечной точкой
                sock.Listen(10); // Устанавливаю сокет в состояния прослушивания
                                 // Максимальная длинна очереди ожидающих подключение 10
                toolStripStatusLabel1.Text = "Ожидаю подключения";
                //Создаю объект Socket для текущего подключения
                servSock = sock.Accept();
                toolStripStatusLabel1.Text = Addr.ToString();
                Timer tm = new Timer();
                tm.Enabled = true;
                tm.Interval = 1000;
                tm.Tick += new EventHandler(reseive_Message);
 
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
            
        }
 
        private void reseive_Message(object sender, EventArgs e)
        {
            byte[] msg = new byte[servSock.Available];
            servSock.Receive(msg); // Принимаю сообщение
            textBox1.Text = Encoding.UTF8.GetString(msg); 
        }
 
        private void Form1_FormClosing(object sender, FormClosingEventArgs e)
        {
            try
            {
                servSock.Close();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
    }
}
вроде ошибок не показывается но во время компиляции выскакивает:
Warning 1 Could not copy "obj\Debug\WindowsFormsApplication1. exe" to "bin\Debug\WindowsFormsApplication1.exe" . Beginning retry 1 in 1000ms. The process cannot access the file 'bin\Debug\WindowsFormsApplication1.exe' because it is being used by another process. WindowsFormsApplication1
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
25.03.2013, 17:40
Ответы с готовыми решениями:

Работа с сокетами
В общем проблема такая : я написал чат,есть сервер и клиент,когда я подключаюсь к серверу(сервер работает) через клиентское приложение то...

Работа с сокетами
Можно пример кода как можно организовать асинхронный обмен данными с клиент сервер ???

Работа с сокетами
Добрый день. При работе с сокетами использовался следующий набор заголовочников: #include "stdafx.h" //#include...

6
10 / 10 / 1
Регистрация: 10.02.2013
Сообщений: 92
25.03.2013, 17:46  [ТС]
Перекомпилировал и выскочило вот такое исключение:
Миниатюры
Работа с сокетами  
0
 Аватар для rull
21 / 20 / 3
Регистрация: 10.11.2012
Сообщений: 240
Записей в блоге: 1
25.03.2013, 17:53
Я не знаток, но судя по описанию твоя программка подключается каждые 1000мс и отключаться не успевает, поэтому жалуется что занято другим приложением...
0
10 / 10 / 1
Регистрация: 10.02.2013
Сообщений: 92
25.03.2013, 18:04  [ТС]
Цитата Сообщение от rull Посмотреть сообщение
Я не знаток, но судя по описанию твоя программка подключается каждые 1000мс и отключаться не успевает, поэтому жалуется что занято другим приложением...
Она до того момента не дошла даже, отладка показала что на методе Bind срабатывает исключение, поменял порт, вроде прошла ошибка)

Добавлено через 6 минут
У меня такой вопрос по поводу этого кусочка:
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 private void Form1_Load(object sender, EventArgs e)
        {
            try
            {
                ...
                //Создаю объект Socket для текущего подключения
                servSock = sock.Accept();
                toolStripStatusLabel1.Text = Addr.ToString();
                Timer tm = new Timer();
                tm.Enabled = true;
                tm.Interval = 1000;
                tm.Tick += new EventHandler(reseive_Message);
 
            }
тут идёт ожидание подключения клиента, т.е процесс висит - форма не грузится) куда лучше разместить этот код?
0
16 / 16 / 9
Регистрация: 07.10.2011
Сообщений: 77
Записей в блоге: 1
25.03.2013, 18:05
С синхронными сокетами работать очень сложно, так как неизвестно, когда там что подключается и получается. Лучше сразу освоить мультипоточность для этого дела и работать с сокетами в отдельном потоке.
0
Эксперт .NET
 Аватар для Wolfdp
3788 / 1765 / 371
Регистрация: 15.06.2012
Сообщений: 6,543
Записей в блоге: 3
26.03.2013, 10:42
Цитата Сообщение от Dbogdan27 Посмотреть сообщение
тут идёт ожидание подключения клиента, т.е процесс висит - форма не грузится) куда лучше разместить этот код?
В отдельный поток или ещё лучше, использовать BeginAccept()
0
10 / 10 / 1
Регистрация: 10.02.2013
Сообщений: 92
26.03.2013, 14:41  [ТС]
Спасибо, уже прочитал) но в Begin Accept используются делегаты а я их пока плохо знаю))) Буду разделить по потокам)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
26.03.2013, 14:41
Помогаю со студенческими работами здесь

Работа с сокетами (Telnet, SSH)
Здравствуйте Нужен совет, по работе с сокетами я новичок в этом деле, но нужна помощь, del. Нужен скажем так наставник который...

Работа с сокетами. Получаю не полные данные
проблема состоит в том что я получаю не полные данные Схематично это выглядит так: должно быть "трымпампам", а получаю...

Работа с сокетами, основы клиент-серверного приложения
Нашел простой пример клиент-серверного приложения на C#: Сервер: // SocketServer.cs using System; using System.Text; using...

Работа с сокетами
Здравствуйте. Хочу написать класс Server, который бы отвечал за работу с подключающимися пользователями. Но возникла масса вопросов. ...

Работа с сокетами
Здравствуйте, подскажите как работать с сокетом. Хочу создать сервер который может принимать соединение с 5-10 клиентами. подскажите...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru