hej ;)
na zajecia mam zaprogramowac program ktory bedzie sie komunikowal z podanym serwerem za pomoca podanych komend (przez udp).
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <WinSock2.h>
#include <winsock.h>
#define MAXRCVLEN 512
#define PORTNUM 22333
char *query = "GET_VOL";//jedno z zapytan ktore obsluguje serwer
int main(){
char buffer[MAXRCVLEN+1];
int len, mysocket;
struct sockaddr_in dest;
char *host_ip =NULL;
WSADATA wsaData;
host_ip = "127.0.0.1";
// if this doesn't work
//WSAData wsaData; // then try this instead
// MAKEWORD(1,1) for Winsock 1.1, MAKEWORD(2,0) for Winsock 2.0:
if (WSAStartup(MAKEWORD(2,0), &wsaData) != 0) {
fprintf(stderr, "WSAStartup failed.\n");
exit(1);
}
mysocket = socket(AF_INET, SOCK_DGRAM, 0);
dest.sin_family = AF_INET;
dest.sin_addr.s_addr = inet_addr(host_ip); /* ustawiamy adres hosta */
dest.sin_port = htons (PORTNUM); /* numer portu przechowuje dwubajtowa zmienna - musimy ustalić porządek sieciowy - Big Endian */
memset(&(dest.sin_zero), '\0', 8); /* zerowanie reszty struktury */
connect(mysocket, (struct sockaddr *)&dest,sizeof(struct sockaddr)); /* łączymy się z hostem */
write(mysocket, query, strlen(query)); /* wysyłamy zapytanie */
len=read(mysocket, buffer, MAXRCVLEN); /* i pobieramy odpowiedź */
buffer[len]='\0';
printf("Rcvd: %s",buffer);
closesocket(mysocket); /* zamykamy gniazdo */
return EXIT_SUCCESS;
return 0;
}
schemat wzialem stąd: http://pl.wikibooks.org/wiki/C/Przyk%C5%82ady_z_komentarzem
pokombinowalem z tym: http://beej.us/guide/bgnet/output/print/bgnet_A4.pdf
programuje w Visual Studio.
calosc sie kompiluje, chociaz niby podkresla ze write i read są undefined.
po odpaleniu wywala blad
Debug Assertion failed!
Program:(sciezka do .exe)
File: f:dd\vctools\crt_bld\self_x86\crt\src\write.c
Line: 81
Expression (fh>=0 && (unsigned)fh < (unsigned)_lhandle)
blablalba see the Visual Studio documentation
Press retry to debug application
jakies wskazowki? generalnie z programowaniem nie mam problemu, tylko tu zostalem "rzucony na gleboka wode" i robie po omacku ;)