• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

NuGuN

[C++] Ajuda: Socket's (Resolvido)

17 mensagens neste tópico

Bem... estou a tentar trabalhar com sockets em C++, mas como ainda estou um pouco verde em C++ não estou a ter grande sucesso...

Gostava que me indicassem uma boa library de sockets para C++, um site que voces achem bom para  eu aprender a trabalhar com essa library porque como eu não sei trabalhar com isso não sei distinguir os bons dos maus... :D.

Andei à procura no google e encontrei várias cenas - Link - E estive a tentar seguir um mini tutu que encontreii, mais especificamente, este. O problema é que ele está-me sempre a pedir ficheiros em falta... e eu não se se os tenho mesmo de colocar à mão ou se existe alguma forma de fazer isso automaticamente...

Resumindo, gostava que me orientassem nesta matéria dos Sockets!

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E estive a tentar seguir um mini tutu que encontreii, mais especificamente, este. O problema é que ele está-me sempre a pedir ficheiros em falta...

tem no fim das página link para fazer download de alguns ficheiro, não serão esse que estão a faltar?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

E estive a tentar seguir um mini tutu que encontreii, mais especificamente, este. O problema é que ele está-me sempre a pedir ficheiros em falta...

tem no fim das página link para fazer download de alguns ficheiro, não serão esse que estão a faltar?

Mas depois desses ainda me pede outros que fazem falta ao socket.h se não estou em erro. Tem de se fazer o download dos ficheiros um a um ou existe tipo um pack ou qualquer coisa do genero? Ou talvez eu esteja a fazer isto mal.... O que estou a fazer é: Faço o download dos ficheiros, por exemplo o ServerSocket.h e meto-o na pasta ...\Include do directório do Dev C++, não sei se é assim que se faz..  :-[

Já agora... estou a utilizar o Dev C++

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

como está a usar aspas ("...") no include metes os .h na mesma pasta que os ficheiros que estás a desenolver.

ao que parece o tutorial foi feito em Unix, por isso pode ser que não funcione em Windows.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

hhhmmm, talvez seja esse o problema. E alguem trabalha com sockets que me possa explicar que librarys utiliza e como trabalhar com elas?

Ainda não consegui fazer nada com isto....  :wallbash:  :wallbash:

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esse tutorial é baseado em Linux, e tanto quanto sei os mecanismos de sockets de sistemas operativos *nix não são compatíveis com Windows.

Se estiver correcto, tens que procurar tutoriais de Winsock.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Obrigado pessoal! O problema era mesmo esse  :-[. Como isto é para um projecto que estou a começar a desenvolver e inclui um servidor vou mesmo ficar pelos socket's em *nix  :P

Já consegui meter isso a funcionar, mas antes de conseguir surjio um problema que já resolvi mas que gostava de saber porque estava a dar erro, era o seguinte:

Quando estava a compilar dava-me o seguinte erro:

g++    -c -o simple_server_main.o simple_server_main.cpp

simple_server_main.cpp: In function ‘int main(int, int*)’:

simple_server_main.cpp:7: error: ‘cout’ is not a member of ‘std’

simple_server_main.cpp:35: error: ‘cout’ is not a member of ‘std’

make: *** [simple_server_main.o] Error 1

Podem ver o código fonte desse ficheiro aqui

O que eu fiz foi incluir a iostream.h e apaguei a parte -> std:: - ficando apenas o cout <<......

De qualquer forma gostava de saber o que ai estava mal...

Já agora, também encontrei mais uns links interessantes para quem também quiser começar nisto dos Soket's.

Link_1

Link_2

Obrigado pela ajuda  :)

P.S. - Alguem que trabalhe com Socket's em C++ que me diga qual a library que utiliza?

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

iostream.h já é c++ standart antigo,  ou podemos dizer que já não é standart.

Correctamente deve-se utilizar "#include <iostream>" com "using namespace std;"

Também é necessário que tenhas essa STL.

As bibliotecas *.h penso que não têm namespaces.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Qual é a diferença entre #include <iostream.h> e #include <iostream>?

E para que serve o "using namespace std;"? Estive a fazer um pequeno programa com isso e sem isso e não noto diferença.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Com h sem h, não sei muito bem a diferença. É nova norma sem h. Os gajos que fazem a norma C++ andaram a mecher nessas coisa,  penso que a organizar melhor as classes entre outras melhorias, e ficaram com esta nova norma que tem namespaces.

Ora, os namespaces são essencialmente uteis por uma questão de organização e de evitar "Name-Clashes", choques entrenomes iguais.

Por exemplo,  se estiveres em um grupo de programadores em que cada um trabalha com namespaces diferentes, quando juntarem código não têm de se preocupar se deram nomes iguais a classes. Se as classes estão em namespaces diferentes são diferentes mesmo que tenham o mesmo nome.

 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

quanto à diferença entre ter 'h' ou não, penso que as bibliotecas do C++ é sem 'h' e as do C é com 'h'.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bem.. para tirar esta quetão a limpo decidi fazer uma pequisa no google sobre o assunto e parece que ainda fiqui com mais dúvidas...

Encontrei este link, mas não percebi bem...

por exemplo, neste bocado aqui:

KRYUKOV:

>

> And the main difference between #include <something.h> and

> #include <something> is that the former puts all the declarations in

> global scope.

Mete o quê num global scope. Já agora o que é um global scope, assim muito resumidamente?

Depois também não percebi isto:

No. There are C headers and there are C++ headers. When you #include a C

header you get the C header. When you #include a header whose name is

the letter 'c' followed by the name of a C header without the .h you get

the C++ version of that header. When you #include a standard header

whose name has no extension you're getting a purely C++ header.

#include <string.h> /* pulls in the C header 'string.h' */

#include <cstring> /* pulls in the C++ version of the

  C header 'string.h' */

#include <string> /* pulls in the C header 'string' */

Aqui confirma-se o que o Rui Carlos disse, mas essa parte do "c" no inicio do nome esta-me a fazer confusão  :-[. Então se tiver apenas #include <string> já não é de C++? Então e no caso da iostream? Não tem o "c" no inicio e no entanto (se não estou a dar barraca) é de C++.

Cumps

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

é assim, quando uso uma biblioteca como a stdio, como é uma biblioteca do C, coloco o 'h', quando uso uma biblioteca como a iostream, como é uma biblioteca do C++, uso sem o 'h'.

penso que só com as bibliotecas do C++ é que podemos retirar o 'h'.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora