[ NrmMyth @ 15.11.2006. 19:10 ] @
Znate li kakvu dobru free C++ socket biblioteku?

Treba mi za maturalni rad (igra) socket koji makar radi samo sa UDP-om.
Ne da mi se radit sa winsockom jer je glup i kompliciran sa svim onim glupostima oko byte ordera i sl.

Nije mi fokus na prijenosu podatak pa se zelim sta brze rijesiti tog dijela.
[ X Files @ 15.11.2006. 19:31 ] @
Ja koristim besplatni Indy set komponenti:
http://www.indyproject.org/
... koji se može koristiti uz puno okruženja.

Imaju i "jak" NNTP forum:
news.atozedsoftware.com


Evo ti jedan primer koji sam ranije sklepao, kada KLIJENT pita SERVER koliko
je sati i od njega dobije odgovor (tek da osetis princip):

Ima i attachment.

BCB verzija:

--- KLIJENT ---
Code:

#include <vcl.h>
#pragma hdrstop

#include "main.h"
#pragma package(smart_init)
#pragma resource "*.dfm"
TIndyClientForm *IndyClientForm;
__fastcall TIndyClientForm::TIndyClientForm(TComponent* Owner)
        : TForm(Owner)
{
}
void __fastcall TIndyClientForm::AskButtonClick(TObject *Sender)
{
   AskButton->Enabled = false;

   try
   {
      // CONNECTING
      IdTCPClient->Connect();

      // PREPARING REQUEST
      AnsiString REQUEST = "Can you please tell me what's the time?";
      Memo->Lines->Add( REQUEST + " (prepared)" );

      // SENDING TASKS
      IdTCPClient->WriteInteger( REQUEST.Length() );
      IdTCPClient->Write( REQUEST );
      Memo->Lines->Add( REQUEST + " (sent)" );

      // RECEIVING TASKS
      int BytesToRead = IdTCPClient->ReadInteger();
      AnsiString RESPONSE = IdTCPClient->ReadString( BytesToRead );
      Memo->Lines->Add( RESPONSE );
   }
   __finally
   {
      IdTCPClient->Disconnect();
      AskButton->Enabled = true;
   }
}
void __fastcall TIndyClientForm::IdTCPClientStatus(TObject *axSender,
      const TIdStatus axStatus, const AnsiString asStatusText)
{
   Caption = asStatusText;
}


--- SERVER ---
Code:

#include <vcl.h>
#pragma hdrstop

#include "main.h"
#include <StrUtils.Hpp>
#pragma package(smart_init)
#pragma resource "*.dfm"
TIndyServerForm *IndyServerForm;
__fastcall TIndyServerForm::TIndyServerForm(TComponent* Owner)
        : TForm(Owner)
{
}
void __fastcall TIndyServerForm::IdTCPServerExecute(TIdPeerThread *AThread)
{
   // RECEIVING TASKS ...
   int BytesToRead = AThread->Connection->ReadInteger();
   AnsiString REQUEST = AThread->Connection->ReadString( BytesToRead );
   Memo->Lines->Add( REQUEST + " (received)" );

   // PROCESSING & PREPARING ANSWER TASKS ...
   AnsiString RESPONSE = FormatDateTime( "hh:mm AM/PM", Now() );
   Memo->Lines->Add( RESPONSE + " (prepared)" );

   // SENDING TASKS ...
   AThread->Connection->WriteInteger( RESPONSE.Length() );
   AThread->Connection->Write( RESPONSE );
   Memo->Lines->Add( RESPONSE + " (sent)" );
}
void __fastcall TIndyServerForm::IdTCPServerStatus(TObject *axSender,
      const TIdStatus axStatus, const AnsiString asStatusText)
{
   Caption = asStatusText;
}


[ NrmMyth @ 15.11.2006. 20:16 ] @
Pre kompleksno mi je ovo. Treba mi nesto lagano i jednostavno.
Mozda wraper za winsock?
[ karas @ 16.11.2006. 08:34 ] @
Pogledaj Poco na www.appinf.com, besplatna je, radi za Windows i Linux. Iako je velika, mozzesh da koristish samo shto ti treba. Dokumentacija je dobra kao i primeri, vidim da su otvorili i forum.
[ NrmMyth @ 17.11.2006. 20:56 ] @
Poko je odlican i jednostavan, podsjeca na .NET.

Nego, jeste li vi imali problema sa buildanjem biblioteke?
Pokusao sa po ovim uputama http://www.appinf.com/poco/wiki/tiki...stStepsWindows i nije uspjelo.
Zatim sam pokusao sam buildati solutione i to takodjer nije urodilo plodom.
[ karas @ 20.11.2006. 08:21 ] @
Ne znam za Windows, koristim Linux i instalacija sa novijim GCC-om prolazi.
[ NrmMyth @ 20.11.2006. 09:22 ] @
Poko je stvarno lijepa biblioteka, steta sto ne mogu izvesti build.
[ kiklop74 @ 20.11.2006. 12:26 ] @
Trenutno poco ne podrzava nijedan borlandov kompajler. Ono sto jeste podrzano na windowsu je mingw, cygwin, MSVC 7.1 i 8.0. Za borland ne mogu da se koriste oni skriptovi, niti projektni fajlovi za visual studio. Treba napraviti ili posebne makefile skripte ili projektne fajlove.
[ NrmMyth @ 20.11.2006. 21:25 ] @
Pokusaji su bili s VS-om.

Kad pokrenem "build_vs80.bat" u Visual studijevom command prompu onda dobijem nesto slicno "File not found, skiping..." za svaki solution fajl naveden tamo.
Ako pokusam sam iskompajlirati solitione u VS onda imam problem kao ovaj lik ovdje:
http://www.appinf.com/poco/wik...amp;topics_find=&forumId=6