С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++/CLI Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.95/21: Рейтинг темы: голосов - 21, средняя оценка - 4.95
 Аватар для snyppimylt
8 / 8 / 1
Регистрация: 18.12.2011
Сообщений: 409

Socket для Visual C++ на .NET

30.10.2013, 15:12. Показов 4113. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Кто разбирается в сокетах на С++ с использованием .Net ? нужно переписать код сервер-приложения с C# на Manaager C++

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
using System;
using System.Text;
using System.Net;
using System.Net.Sockets;
 
namespace SocketServer
{
    class Program
    {
        static void Main(string[] args)
        {
            // Устанавливаем для сокета локальную конечную точку
            IPHostEntry ipHost = Dns.GetHostEntry("localhost");
            IPAddress ipAddr = ipHost.AddressList[0];
            IPEndPoint ipEndPoint = new IPEndPoint(ipAddr, 11000);
 
            // Создаем сокет Tcp/Ip
            Socket sListener = new Socket(ipAddr.AddressFamily, SocketType.Stream, ProtocolType.Tcp);
 
            // Назначаем сокет локальной конечной точке и слушаем входящие сокеты
            try
            {
                sListener.Bind(ipEndPoint);
                sListener.Listen(10);
 
                // Начинаем слушать соединения
                while (true)
                {
                    Console.WriteLine("Ожидаем соединение через порт {0}", ipEndPoint);
 
                    // Программа приостанавливается, ожидая входящее соединение
                    Socket handler = sListener.Accept();
                    string data = null;
 
                    // Мы дождались клиента, пытающегося с нами соединиться
                    
                    byte[] bytes = new byte[1024];
                    int bytesRec = handler.Receive(bytes);
                    
                    data += Encoding.UTF8.GetString(bytes, 0, bytesRec);
                    
                    // Показываем данные на консоли
                    Console.Write("Полученный текст: " + data + "\n\n");
                    
                    // Отправляем ответ клиенту\
                    string reply = "Спасибо за запрос в " + data.Length.ToString()
                            + " символов";
                    byte[] msg = Encoding.UTF8.GetBytes(reply);
                    handler.Send(msg);
 
                    if (data.IndexOf("<TheEnd>") > -1)
                    {
                        Console.WriteLine("Сервер завершил соединение с клиентом.");
                        break;
                    }
                    
                    handler.Shutdown(SocketShutdown.Both);
                    handler.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                Console.ReadLine();
            }
        }
    }
}
код взял из одного из сайтов по С# . стал переписывать самостоятельно но наткнулся на другие подводные камни с такими как

1>c:\\****\*****\*****\****\client\clien t\Form1.h(128) : error C2664: int System::Net::Sockets::Socket::Receive(cl i::array<Type,dimension> ^): невозможно преобразовать параметр 1 из 'cli::array<Type> ^' в 'cli::array<Type,dimension> ^'
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
private: System::Void Form1_Load(System::Object^  sender, System::EventArgs^  e) {
 
                 // Локальная точка - данные для коннекта
IPHostEntry^ ipH = Dns::GetHostEntry("localhost");
IPAddress^ ipAdd = ipH->AddressList[0];
IPEndPoint^ ipEp = gcnew IPEndPoint(ipAdd,11000);
 
// Создаем сокет tcp/ip 
 
Socket^ sL = gcnew Socket( AddressFamily::InterNetwork, SocketType::Stream, ProtocolType::Tcp);
 
try
{
    sL->Bind(ipEp);
    sL->Listen(10);
    
    ///...
    while(true)
    {
 
        Socket^ hdl = sL->Accept();
        String^ dat = "";
            
        array<Byte^> ^bt = gcnew array<Byte^>(1024);
        
 
 
    Int32 br = hdl->Receive(bt); // ошибка
 
        
        textBox1->Text= dat;
    }
    
 
}
             }
код сам не дописан.

в mdsn лезть не хочется, хочется конкретно разобраться в данном примере

Проект пишу на WFA.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
30.10.2013, 15:12
Ответы с готовыми решениями:

Error #: 306 : constructor Socket(java.net.SocketImpl) has protected access in class java.net.Socket at line 282, column 32
привет , как сделать чтобы это компилилось а не выдавало ошибок sock = new Socket(cServerIp, nPort, cLocalIp, 0); Error #: 306 :...

Nodejs net socket server and android socket client
Добрый день Форумчане нужно помощь гуру! Решил с другом написать сервер на ноде с использование сокетов и андроид клиент отправки сокет. Но...

Как открыть файлы в формате visual studio .net 2003 в visual studio net 2002?
Возможно ли открыть файлы в формате visual studio .net 2003 в visual studio .net 2002 ?? Илт только update ?

6
30.10.2013, 15:46

Не по теме:

Смысл таких переводов ? Менять точки на стрелочки . Ну и пишите на C#

0
 Аватар для snyppimylt
8 / 8 / 1
Регистрация: 18.12.2011
Сообщений: 409
30.10.2013, 15:58  [ТС]
Цитата Сообщение от MrCold Посмотреть сообщение

Не по теме:

Смысл таких переводов ? Менять точки на стрелочки . Ну и пишите на C#

Ответьте по теме т.к. я люблю больше С++ и на Vusial Studio на формах после Visual Basic 6 делать приложения в самый раз. Есть конечно альтернатива по лучше такая как Qt, но мне он не нужен.
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
30.10.2013, 16:00
Увидел, отвечаю
Цитата Сообщение от snyppimylt Посмотреть сообщение
array<Byte^> ^bt = gcnew array<Byte^>(1024);
Там Byte - тип значения
C++
1
array<Byte> ^bt = gcnew array<Byte>(1024);
0
 Аватар для snyppimylt
8 / 8 / 1
Регистрация: 18.12.2011
Сообщений: 409
30.10.2013, 17:08  [ТС]
Цитата Сообщение от MrCold Посмотреть сообщение
Увидел, отвечаю

Там Byte - тип значения
C++
1
array<Byte> ^bt = gcnew array<Byte>(1024);
данная версия кода неработоспособная
0
873 / 771 / 173
Регистрация: 11.01.2012
Сообщений: 1,942
30.10.2013, 17:26
Цитата Сообщение от snyppimylt Посмотреть сообщение
данная версия кода неработоспособная
По приведенному вами куску перевода,
студия ругается здесь

C++
1
IPAddress^ ipAdd = ipH->AddressList[0];
приходится явно приводить
C++
1
IPAddress^ ipAdd = (IPAddress^)ipH->AddressList[0];
больше ошибок не выдает
0
 Аватар для snyppimylt
8 / 8 / 1
Регистрация: 18.12.2011
Сообщений: 409
30.10.2013, 17:41  [ТС]
Спасибо и на этом
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
30.10.2013, 17:41
Помогаю со студенческими работами здесь

NET Framework для Visual C++
До этого кодил только на C#. Необходима IDE с простотой создания WinForms, как на C# Visual Studio, только на C++, чтобы пользователю не...

Service Pack для Visual Studio.Net
Есть ли Service Pack для Visual Studio.Net и если есть где его можно скачать?

Для чего нужен Visual Basic.Net?
Здравствуйте. Объясните пожалуйста для какой деятельности нужен Visual Basic и Visual Basic.Net? То есть для чего там делают программы? И...

C++/CLI: язык Visual C++ для среды .NET
Подскажите где найти книжку C++/CLI: язык Visual C++ для среды .NET или какую еить другую чтоб с нуля изучать C++/CLI :)

Посоветуйте литературу для изучения Visual Basic .NET
Какую литературу по вб посоветуете? В тему не посылать. Не знаю какую выбрать даже. главное чтобы было расписано подробно все


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru