Здравствуйте, я написал программу работающую с UDP пакетами, но столкнулся с серьёзной проблемой. дело в том что пакеты в консоли обрезаются
вывод в консоли обрезается если в пакете встречается 00 в хексе виде
Код | #include<stdio.h> #include<string.h> #include<winsock2.h> #include<windows.h>
#define PORT 27015 #define SERVERADDR "78.107.233.235" #define MSG "\xFF\xFF\xFF\xFF\x55\x0E\x5C\x32\x1E"
int main ( int argc, char* argv [ ] ) {
WSADATA wsaData; int BufLen = 10024; char RecvBuf[10024];
if (WSAStartup(MAKEWORD(2,2), &wsaData)) { printf (" WSAStartup error: %d\n ", WSAGetLastError ( ) ); return -1; }
SOCKET name_sock=socket ( AF_INET, SOCK_DGRAM, IPPROTO_UDP ); if ( name_sock==INVALID_SOCKET ) { printf (" socket ( ) error: %d \n ", WSAGetLastError ( ) ); WSACleanup ( ); return -1; }
HOSTENT *hst; sockaddr_in dest_addr;
dest_addr.sin_family=AF_INET; dest_addr.sin_port=htons ( PORT );
if (inet_addr ( SERVERADDR )) dest_addr.sin_addr.s_addr=inet_addr ( SERVERADDR ); else if ( hst=gethostbyname ( SERVERADDR )) dest_addr.sin_addr.s_addr=((unsigned long **) hst->h_addr_list)[0][0]; else { printf ("Unknown host: %d \n", WSAGetLastError ( )); closesocket ( name_sock ); WSACleanup ( ); return -1; }
int poket= sizeof ( MSG )-1;
sendto(name_sock, MSG, poket, 0,(sockaddr *) &dest_addr, sizeof(dest_addr));
sockaddr_in server_addr; int server_addr_size=sizeof (server_addr);
int n=recvfrom (name_sock, RecvBuf, sizeof(RecvBuf),0,(sockaddr *) &server_addr, &server_addr_size);
if ( n==SOCKET_ERROR) { printf ("recvfrom ( ) error: %d\n", WSAGetLastError ( ) ); closesocket(name_sock); WSACleanup ( ); return -1; }
strcat(RecvBuf, "\0");
//while(n > 0) printf("%s\n", RecvBuf);
closesocket (name_sock); WSACleanup ( ); return 0; }
|
|