Форум программистов, компьютерный форум, киберфорум
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. Показов 3956. Ответов 6
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Кто разбирается в сокетах на С++ с использованием .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
Ответ Создать тему
Новые блоги и статьи
Не удержался от оценки концепции двигателя Стирлинга.
Hrethgir 03.04.2025
Сколько не пытался - она выдавала правильные схемы, причём случайно рисовала горячие области в середине, холодные по краям, трубки с краёв в низ и магнит в соединяющей, но при этой выдавала описание. . .
Метод с двумя буферами (или double buffering) или ping-pong buffering
Hrethgir 02.04.2025
Из ответов LM модели. Метод, который предполагает использование двух массивов для хранения промежуточных результатов сложения векторов, обычно применяется в сценариях, где необходимо минимизировать. . .
На любовном киберфронте
Alexander-7 01.04.2025
Недавно на одном малоизвестном сайте знакомств мною заинтересовалась девушка: «Текст немного странный. Но, судя по адресу почты, иностранка», – подумал я. Поколебавшись пару суток, я ответил ей:. . .
Как работает Node.js изнутри
run.dev 29.03.2025
Node. js изменил подход к разработке веб-приложений, позволив использовать JavaScript не только на стороне клиента, но и на сервере. Созданный в 2009 году Райаном Далем, этот открытый,. . .
Моки в Python: Mock Object Library
py-thonny 29.03.2025
Тестирование кода требует особого подхода, когда речь идёт о компонентах, взаимодействующих с внешним миром. Мы часто сталкиваемся с непредсказуемостью HTTP-запросов, чтением данных из базы или. . .
JavaScript: Управление памятью и улучшение производительности
run.dev 29.03.2025
В отличие от низкоуровневых языков программирования, JavaScript не требует ручного выделения и освобождения памяти. Здесь работает автоматический сборщик мусора, который определяет, какие объекты. . .
Мультитенантная архитектура со SpringBoot и PostgreSQL
ArchitectMsa 29.03.2025
SaaS-приложения редко обслуживают одного клиента и обычно они должны поддерживать множество организаций, каждая из которых работает в своём изолированном пространстве. Мультитенантная архитектура. . .
std::span в C++: Производительность и лучшие практики
NullReferenced 28.03.2025
std::span — одно из самых недооценённых нововведений стандарта C++20, которое радикально меняет подход к работе с непрерывными последовательностями данных. По сути, это невладеющее представление. . .
Многопоточность в C#: Threadpool
UnmanagedCoder 28.03.2025
Пул потоков в C# — это коллекция заранее созданных и готовых к использованию потоков, которые находятся в распоряжении приложения. Вместо того чтобы создавать и уничтожать потоки для каждой небольшой. . .
Вопросы на собеседованиях по микросервисам
ArchitectMsa 27.03.2025
Работодатели ищут не просто разработчиков, знающих базовые концепции, а специалистов, разбирающихся в тонкостях масштабирования, отказоустойчивости и производительности. Сейчас на первый план выходят. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru
Выделить код Копировать код Сохранить код Нормальный размер Увеличенный размер