Hey ho, ich habe gestern angefangen ne kleine Socketklasse zu schreiben, habe mir dazu das c-worker tut genommen.
Es gibt ein kleines Problem mit dem Port...
Ich zeige euch mal mein kleines Projekt:
socket.cpp:
socket.h:
in meiner main dann
Das Problem liegt anscheinent hier:
addr.sin_port = htons((u_short)this->Port); (ich weiß, dass der carst schwachsinnig ist)
Wenn ich den Port normal dort eintrage, als Zahl, dann gibt es keine Probleme, die Verbindung wird aufgenommen.
Ich verwende devc++...
Ich schreibe noch nicht so lange in c++, würde mich freuen, wenn mir jemand sagen könnte, woran es liegt und wie ich es beheben kann.
Es gibt ein kleines Problem mit dem Port...
Ich zeige euch mal mein kleines Projekt:
socket.cpp:
Code:
// Class automatically generated by Dev-C++ New Class wizard
#include "socket.h" // class's header file
// class constructor
Socket::Socket(char IpAddress[],u_short Port)
{
this->Port = Port;
strcpy(this->IpAddress,IpAddress);
}
bool Socket::Connect(){
if(StartWinsock() == 0){
SOCKET s = socket(AF_INET,SOCK_STREAM,0);
if (s != INVALID_SOCKET){
SOCKADDR_IN addr;
memset(&addr,0,sizeof(SOCKADDR_IN));
addr.sin_family = AF_INET;
addr.sin_port = htons((u_short)this->Port);
addr.sin_addr.s_addr = inet_addr(this->IpAddress);
if (connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR))!= SOCKET_ERROR){
return true;
}else{
MessageBox(0,"Nicht connectet","",0);
return false;
//Fehler
}
}else{
MessageBox(0,"Socket nicht erstellt","",0);
return false;
//Fehler
}
}else{
MessageBox(0,"Winsock nicht gestartet","",0);
return false;
//Fehler
}
}
int Socket::StartWinsock(){
WSADATA wsa;
return WSAStartup(MAKEWORD(2,0),&wsa);
}
// class destructor
Socket::~Socket()
{
// insert your code here
}
socket.h:
Code:
// Class automatically generated by Dev-C++ New Class wizard
#ifndef SOCKET_H
#define SOCKET_H
#include <winsock.h>
#include <windows.h>
// Genereller Socket
class Socket
{
public:
// class constructor
Socket(char IpAddress[],u_short Port);
bool Connect();
// class destructor
~Socket();
private:
int StartWinsock();
char IpAddress[];
u_short Port;
};
#endif // SOCKET_H
Code:
Socket s("127.0.0.1",1889);
if(s.Connect() == true){
MessageBox(0,"Verbindung hergestellt","",0);
}
addr.sin_port = htons((u_short)this->Port); (ich weiß, dass der carst schwachsinnig ist)
Wenn ich den Port normal dort eintrage, als Zahl, dann gibt es keine Probleme, die Verbindung wird aufgenommen.
Ich verwende devc++...
Ich schreibe noch nicht so lange in c++, würde mich freuen, wenn mir jemand sagen könnte, woran es liegt und wie ich es beheben kann.