Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

проблемы при программировании сокетов

2.5K
07 июля 2009 года
Akula
38 / / 17.01.2005
Код:
namespace socket_test {

    using namespace System;
                 ...
    using namespace System::Net;
    using namespace System::Net::Sockets;
    using namespace System::Text;

public ref class summ
{
public:
array<Byte>^ buffer;
Socket^ client;
summ() {
buffer = gcnew array<Byte>(256);
//client=NULL;
}
};

    public ref class Form1 : public System::Windows::Forms::Form
    {
          ...

#pragma endregion

Socket^ ConnectSocket( String^ server, int port )
{
...
}

static void OnSocketReceive(IAsyncResult^ ar)
{

summ^ client = (summ^)ar->AsyncState;
int bytes_count = client->client->EndReceive(ar);
Windows::Forms::MessageBox::Show(Encoding::ASCII->GetString( client->buffer, 0, bytes_count),"123");
client->client->BeginReceive (client->buffer,0,256,SocketFlags::None,gcnew AsyncCallback(OnSocketReceive),client);
}

private: System::Void button1_Click(System::Object^  sender, System::EventArgs^  e) {
    String^ request = "request string";
   array<Byte>^bytesSent = Encoding::ASCII->GetBytes( request );
   array<Byte>^bytesReceived = gcnew array<Byte>(256);
        Socket^ s;
       
   // Create a socket connection with the specified server and port.
   s = ConnectSocket( "192.168.192.2", 7 );
   if ( s == nullptr )
      return;

   // Send request to the server.
   s->Send( bytesSent, bytesSent->Length, static_cast<SocketFlags>(0) );

   // Receive the server home page content.
   int bytes = 0;
   
   summ^ status=gcnew summ;
   status->client = s;
   s->BeginReceive (status->buffer,0,256,SocketFlags::None,gcnew AsyncCallback(OnSocketReceive),status);
             
         }
    };

1) Вопрос №1
Когда я объявляю класс summ над классом формы - вре нормально работает, кроме конструктора форм. Конструктор форм отображает ошибку, мол, что класс формы должен быть первым. Поскольку это С++ в нем нету вложенных классов, подскажите пожалуйста, где мне объявить этот класс так, что бы и программа работала и конструктор форм

2) Вопрос №2
Функция OnSocketReceive должна быть static, иначе компилятор ругается. Как в таком случае быть, если я хочу данные, переданные через сеть отобразить в каком либо текстбоксе. Конструкция this->textbox1->text="123"; не катит, т.к. в статичной функции нет указателя this. Как поступать в данном случае?
241
13 июля 2009 года
Sanila_san
1.6K / / 07.06.2005
Жаль, что я ни черта не рублю в С++, но здравый смысл подсказывает решение ответить на второй вопрос через событие с параметрами.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог