07. september 2005 - 15:49
Der er
11 kommentarer og
1 løsning
UDP socket eksempel med winsock
Hej!
Jeg ønsker et UDP socket eksempel til winsock som forbinder ti
en server, sender en besked og udskriver svaret.
Mvh. Mathias Hansen
07. september 2005 - 16:10
#2
Yep. Har kigget på den, men det er til linux så vidt jeg kan se, glemte lige at nævne
at jeg skal bruge det til win32 :)
07. september 2005 - 17:38
#8
Okay.
Så er jeg nået så langt her:
#include <stdlib.h>
#include <iostream.h>
#include <windows.h>
#include <winsock.h>
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <tchar.h>
#include <stdio.h>
char *msg;
void runClient()
{
//Adresse på server
char serverAddr[] = "81.7.135.134";
//Servers port
int port = 27015;
int i,sock,bytesRead;
//Buffer til indkommende data
char buffer[1024];
//Besked som vi sender
char * message = "\xFF\xFF\xFF\xFFinfo\x00";
//Opret socket
sock = socket(AF_INET,SOCK_DGRAM,IPPROTO_UDP);
if(sock == 0)
{
strcpy(msg, "Kunne ikke oprette socket.");
return;
}
//Gør socket klar til at boradcaste
int value = 1;//1 betyder true
if(setsockopt(sock,SOL_SOCKET,SO_BROADCAST,(char*)&value,sizeof(int)) != 0)
{
//cout << "Kunne ikke sætte socket op til broadcasting." << endl;
}
int fromLen = sizeof(sockaddr_in);
//Send besked
sendto(sock,message,strlen(message),0,(sockaddr *) serverAddr,fromLen);
//Vi vil højst vente 5 sekunder på, at serveren svarer
fd_set set;
struct timeval timeout;
int err;
FD_ZERO(&set);
FD_SET(sock,&set);
//Specificér hvor lang tid vi skal vente
timeout.tv_sec = 5;
timeout.tv_usec = 0;
//Vent på data
err = select(FD_SETSIZE,&set,NULL,NULL,&timeout);
if(err > 0)
{
//Modtag noget igen
bytesRead = recvfrom(sock,buffer,1024,0,(sockaddr *) &serverAddr,&fromLen);
sprintf(msg, "Modtog data:\r\n%s\r\n", bytesRead);
}
else
{
strcpy(msg, "Intet svar...");
}
//Frigiv socket
closesocket(sock);
}
/*
extern "C" __declspec(dllexport) int __stdcall get_info(HWND mWnd, HWND aWnd, char *data, char *parms, BOOL show, BOOL nopause)
{
runClient();
strcpy(data, msg);
return 3;
}*/
int main() {
runClient();
cout << msg;
}
Men programmet crasher desværre :/
Hvorfor?