Ubuntu Suomen keskustelualueet
Ubuntun käyttö => Ohjelmointi, palvelimet ja muu edistyneempi käyttö => Aiheen aloitti: peehoopee - 04.11.08 - klo:20.31
-
Eli olis semmonen ongelma etten saa luotua simppeliä sockettia c++:lla, joka yhdistää palvelimelle, lähettää sinne vaikkapa "moi" ja vastaanottaa dataa jossain while loopissa. Olen nyt 3 päivää etsiskellyt tutoriaaleja c++ socketeista joista voisi olla apua aloittelijalle mutta ilman tulosta.. kaikissa lukemissani tutoriaaleissa on liikaa erilaisia ominaisuuksia, ja sen takia koodista on vaikea saada selvää :(
kun saisin sen yhdistämisen serverille kuntoon niin siitä olisi helppo lähteä rakentamaan ohjelmaa muuten eteenpäin.
Aiemmin olen ohjelmoinut mm. C#, php -kieliä, joilla olen onnistunut luomaan simppelin socketin ;D
Tässä pätkä aloittamastani ohjelmasta, jonka pitäisi yhdistää irc-serverille :
#include <iostream>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netdb.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <string>
struct sockaddr_in ip4addr;
struct remotehost;
int sock;
char *server;
int main()
{
server = "irc.quakenet.org";
sock = socket(AF_INET, SOCK_STREAM, 0);
remotehost = gethostbyname(server);
ip4addr.sin_family = AF_INET;
ip4addr.sin_port = htons(6667);
ip4addr.sin_addr.s_addr= = remotehost;
//inet_pton(AF_INET, "128.39.2.28", &ip4addr.sin_addr);
bind(sock, (struct sockaddr*)&ip4addr, sizeof (ip4addr));
/*if(connect(s,ip4addr,sizeof(ip4addr))){
perror("connet");
exit(1);
}*/
}
Eli sattuisiko täällä olemaan joku jolla tämä asia on paremmin hallussa ja osaisi auttaa minua... ::)
-
Muutamia huomioita:
//...
#include <stdio.h> // C-kirjastot olisi hyvä C++:ssa includoida tyyliin #include <cstdio> eli c eteen ja .h pois
//...
struct sockaddr_in ip4addr; // myöskään c++:ssa ei struct-sanaa tarvitse käyttää muuta kuin structia määriteltäessä
struct remotehost; // tässä esitellään remotehost-niminen tietue, mutta sitä ei määritellä missään?
// ...
int main()
{
//...
remotehost = gethostbyname(server); // tämän nimistä muuttujaa ei ole esitelty
//...
}
-
Oletkohan tutustunut Weicon socket tutoriaaleihin. Niissä ei kyllä ainakaan mielestäni ole liikaa tauhkaa...
Tosin niidenkin tutustumiseen kannattaa varata aikaa...
http://wiki.mureakuha.com/wiki/Weicon_socket-tutoriaali
http://wiki.mureakuha.com/wiki/Weicon_socket-tutoriaali_osa_2
-
Kiitos kaikille vastauksista.. :D
Luen noi weicon socket tutoriaalit jos ne vaikka auttaisivat :D