Hab mal ein kleines Programm in C geschrieben, mit dem ich mich mit dem TCP Server verbinden möchte. Leider scheitert es schon beim HALLO... Irgendwie kommt das HALLO ACK nicht. Habe es so wie in der Dokumentation gemacht. Weiß einer woran das liegen könnte?
EDIT: Code angefügt
EDIT2: Die Socket Verbindung geht. Auch das Datenpaket geht raus. Es kommt aber nix zurück. (Mit Netzwerk Sniffer überprüft!)
Code: Alles auswählen
#include <windows.h>
#include <stdio.h>
#include <conio.h>
#pragma comment(lib,"ws2_32.lib")
u_short port=1435;
int startWinsock(void){
WSADATA wsa;
return WSAStartup(MAKEWORD(2,0),&wsa);
}
int main(){
long rc;
SOCKET s;
SOCKADDR_IN addr;
char buf[512];
char inputbuf[1024];
rc=startWinsock();
if(rc!=0){
printf("Fehler: startWinsock, fehler code: %d\n",rc);
return 1;
}
else{
printf("Winsock gestartet!\n");
}
s=socket(AF_INET,SOCK_STREAM,0);
if(s==INVALID_SOCKET){
printf("Fehler: Der Socket konnte nicht erstellt werden, fehler code: %d\n",WSAGetLastError());
return 1;
}
else{
printf("Socket erstellt!\n");
}
memset(&addr,0,sizeof(SOCKADDR_IN)); //zuerst alles auf Null setzen
addr.sin_family=AF_INET;
addr.sin_port=htons(port);
addr.sin_addr.s_addr=inet_addr("192.168.1.5");
rc=connect(s,(SOCKADDR*)&addr,sizeof(SOCKADDR));
if(rc==SOCKET_ERROR){
printf("Fehler: connect gescheitert, fehler code: %d\n",WSAGetLastError());
return 1;
}
else{
printf("Verbunden mit 192.168.1.5 \n");
}
buf[0]=0x00; //Paketlänge 4 Byte
buf[1]=0x00;
buf[2]=0x00;
buf[3]=0x0D;
buf[4]=0x00; // Hello Befehl 2 Byte
buf[5]=0x01;
buf[6]=0x02; // Version 1 Byte
buf[7]=0x02; // Client Type 1 Byte
buf[8]=0x08; // Länge des Identifiers
buf[9]=0x46;
buf[10]=0x61;
buf[11]=0x68;
buf[12]=0x72;
buf[13]=0x70;
buf[14]=0x75;
buf[15]=0x6C;
buf[16]=0x74;
//strcpy((buf+9),"Fahrpult\n");
printf(buf);
send(s,buf,17,0);
recv(s,inputbuf,1024,0);
while(!_kbhit());
return 0;
}