Rene Einsteiger
Registriert seit: 07.2011 Beiträge:1
| UDP Server Hallo,
ich habe folgendes Problem.
Ich bin dabei einen NMEA Konverter zu programmieren.
Die Daten die mein GPS-Tracker sendet werden über das UDP-Protokoll gesendet.
Das Tracker Protokoll enthält Binäre und GPS Daten.
Das Problem besteht nun darin, dass die Binären Daten nicht angezeigt werden, also alles was ab den Binären Daten als GPS Koordinaten vorhanden ist, wird nicht angezeigt.
Hier der Datenstream, der eigentlich komplett übertragen werden soll:
$$W..i....-™U130528.000,A,4824.5857,N,01003.9330,E,0.00,,300611,,,A*76
|0.8|492|0000ßØ
Übertragen wird aber nur $$ der Rest wird einfach weggelassen.
Hier mein Quellcode:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#pragma comment (lib,"wsock32.lib") // the port users will be connecting to
#include<winsock.h>
#define port 8500
#define MAXDATASIZE 100
int main(void)
{
int sockfd;
struct sockaddr_in my_addr,their_addr;
char buff[MAXDATASIZE];
int numbytes;
int val;
WSADATA wsaData;
if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0) {
fprintf(stderr, "WSAStartup failed.\n");
exit(1);
}
if((sockfd=(socket(AF_INET,SOCK_DGRAM,0))) <0)
{
perror("socket");
WSACleanup();
exit(1);
}
my_addr.sin_family=AF_INET;
my_addr.sin_port=htons(port);
my_addr.sin_addr.s_addr=INADDR_ANY;
memset(&(my_addr.sin_zero),0,8);
val=sizeof(struct sockaddr);
if(bind(sockfd,(struct sockaddr*)&my_addr,val) ==-1)
{
perror("bind");
WSACleanup();
exit(1);
}
for(;
{
printf("\n\nwaiting for client to connect");
numbytes=sizeof(struct sockaddr);
if((numbytes=recvfrom(sockfd,buff,MAXDATASIZE-1,0,(struct sockaddr*)&their_addr,&numbytes)) == -1)
{
printf("read error");
//WSACleanup();
val=WSAGetLastError();
}
buff[numbytes]=0;
fprintf(stderr,"\ndata recieved from client :%s",buff);
if((numbytes=sendto(sockfd,buff,numbytes,0,(struct sockaddr*)&their_addr,sizeof(struct sockaddr)))<0)
{
perror("send");
exit(1);
}
fprintf(stderr,"\nbytes send to client %d",numbytes);
}
return 0;
}
Hat mir jemand eine Lösung, wie ich den gesamten Datenstream angezeigt bekomme.
Gruß René
|