Hey, ich hab eben versucht mir ein Programm zu schreiben das Daten an ein Game Server(NosTale) sendet, so dass ich mich z.B. im Game bewege.
Irgendwie funktioniert dies nicht so recht, wenn ich das Packet absende passiert in Game nichts und die Verbindung zum Server stürzt im Programm ab.
Bin noch kein Ober Pro darin, eher dabei es zu üben. Wäre es möglich das es über einer dll wahrscheinlicher wäre das es funktioniert oder muss man dabei ganz anders vorgehen damit die Packets angenommen werden?
Wäre über ein paar hilfreiche Antworten erfreut. :)
Code:
#include "stdafx.h"
int startWinsock(void);
int main()
{
long rc;
SOCKET s;
SOCKADDR_IN addr;
char buf[256];
rc=startWinsock();
if(rc!=0)
{
printf("Fehler\n");
return 1;
}
else
{
printf("Winsock gestartet!\n");
}
// Socket erstellen
s=socket(AF_INET,SOCK_STREAM,0);
if(s==INVALID_SOCKET)
{
printf("Fehler: Der Socket konnte nicht erstellt werden");
return 1;
}
else
{
printf("Socket erstellt!\n");
}
// Verbinden
memset(&addr,0,sizeof(SOCKADDR_IN));
addr.sin_family=AF_INET;
addr.sin_port=htons(4030);
addr.sin_addr.s_addr=inet_addr("79.110.84.87");
rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
if(rc==SOCKET_ERROR)
{
printf("Fehler beim connecten..");
return 1;
}
else
{
printf("Verbunden mit 79.110.84.87..\n");
}
// Daten austauschen
while(rc!=SOCKET_ERROR)
{
printf("\nPacket: ");
gets(buf);
send(s,buf,strlen(buf),0);
rc=recv(s,buf,256,0);
if(rc==0)
{
printf("Server hat die Verbindung getrennt..\n");
break;
}
if(rc==SOCKET_ERROR)
{
printf("Fehler: recv");
break;
}
}
closesocket(s);
WSACleanup();
return 0;
}
int startWinsock(void)
{
WSADATA wsa;
return WSAStartup(MAKEWORD(2,0),&wsa);
}
Bin noch kein Ober Pro darin, eher dabei es zu üben. Wäre es möglich das es über einer dll wahrscheinlicher wäre das es funktioniert oder muss man dabei ganz anders vorgehen damit die Packets angenommen werden?
Wäre über ein paar hilfreiche Antworten erfreut. :)