Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /***************
- M-SEARCH * HTTP/1.1
- HOST: 239.255.255.250:1900
- MAN: ssdp:discover
- MX: 10
- ST: ssdp:all
- ************/
- #define SEARCH_REQUEST_STRING "M-SEARCH * HTTP/1.1\r\n" \
- "HOST: 239.255.255.250:1900\r\n" \
- "MAN: ssdp:discover\r\n" \
- "MX: 4\r\n" \
- "ST: ssdp:all\r\n" \
- "\r\n"
- #include <sys/types.h> /* for type definitions */
- #include <winsock2.h> /* for win socket API calls */
- #include <ws2tcpip.h> /* for win socket structs */
- #include <stdio.h> /* for printf() */
- #include <stdlib.h> /* for atoi() */
- #include <string.h> /* for strlen() */
- #include <windows.h>
- #define MAX_LEN 1024 /* maximum string size to send */
- #define MIN_PORT 1024 /* minimum port allowed */
- #define MAX_PORT 65535 /* maximum port allowed */
- /*******************************
- wai am I not getting ANY RESPONSE????
- lonely socket :(
- ***************************/
- DWORD WINAPI printDevices(void* data) {
- printf("ADSDASDASDdaswewffewfewfewfwe THREADDDD\n");
- int sock2;
- struct sockaddr_in name;
- struct hostent *hp, *gethostbyname();
- char recvline[MAX_LEN];
- sock2 = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);
- name.sin_family = AF_INET;
- name.sin_port = htons(3486);
- name.sin_addr.s_addr = htonl(INADDR_ANY);
- int iResult = bind(sock2, (SOCKADDR *) & name, sizeof (name));
- if (iResult != 0) {
- wprintf(L"bind failed with error %d\n", WSAGetLastError());
- return 1;
- }
- while(1){
- recvfrom(sock2,recvline,sizeof(recvline),0,NULL,NULL);
- fputs(recvline,stdout);
- }
- }
- int main(int argc, char *argv[]) {
- int sock; /* socket descriptor */
- char send_str[MAX_LEN] = SEARCH_REQUEST_STRING; /* string to send */
- char recvline[MAX_LEN*10];
- struct sockaddr_in mc_addr; /* socket address structure */
- int send_len; /* length of string to send */
- char* mc_addr_str; /* multicast IP address */
- unsigned short mc_port; /* multicast port */
- unsigned char mc_ttl=255; /* time to live (hop count) */
- WSADATA wsaData; /* Windows socket DLL structure */
- int izbor;
- int sock2;
- struct sockaddr_in name;
- struct hostent *hp, *gethostbyname();
- /* validate number of arguments */
- if (argc != 3) {
- fprintf(stderr,
- "Usage: %s <Multicast IP> <Multicast Port>\n",
- argv[0]);
- exit(1);
- }
- mc_addr_str = argv[1]; /* arg 1: multicast IP address */
- mc_port = atoi(argv[2]); /* arg 2: multicast port number */
- /* validate the port range */
- if ((mc_port < MIN_PORT) || (mc_port > MAX_PORT)) {
- fprintf(stderr, "Invalid port number argument %d.\n",
- mc_port);
- fprintf(stderr, "Valid range is between %d and %d.\n",
- MIN_PORT, MAX_PORT);
- exit(1);
- }
- /* Load Winsock 2.0 DLL */
- if (WSAStartup(MAKEWORD(2, 0), &wsaData) != 0) {
- fprintf(stderr, "WSAStartup() failed");
- exit(1);
- }
- /* create a socket for sending to the multicast address */
- if ((sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_UDP)) < 0) {
- perror("socket() failed");
- exit(1);
- }
- /* set the TTL (time to live/hop count) for the send */
- if ((setsockopt(sock, IPPROTO_IP, IP_MULTICAST_TTL,
- (const char*) &mc_ttl, sizeof(mc_ttl))) < 0) {
- perror("setsockopt() failed");
- exit(1);
- }
- /* construct a multicast address structure */
- memset(&mc_addr, 0, sizeof(mc_addr));
- mc_addr.sin_family = AF_INET;
- mc_addr.sin_addr.s_addr = inet_addr(mc_addr_str);
- mc_addr.sin_port = htons(mc_port);
- printf("Begin typing (return to send, ctrl-C to quit):\n");
- bool bOptVal = true;
- int bOptLen = sizeof(bool);
- int iOptLen = sizeof(int);
- setsockopt(sock, SOL_SOCKET, SO_BROADCAST, (char*)&bOptVal, bOptLen);
- /* clear send buffer */
- memset(send_str, 0, sizeof(send_str));
- send_len = strlen(send_str);
- HANDLE thread = CreateThread(NULL, 0, printDevices, NULL, 0, NULL);
- /* */
- //WaitForSingleObject(thread, INFINITE);
- while(1){
- /* send string to multicast address */
- if ((sendto(sock, send_str, send_len, 0,
- (struct sockaddr *) &mc_addr,
- sizeof(mc_addr))) != send_len) {
- perror("sendto() sent incorrect number of bytes");
- exit(1);
- }
- Sleep(10000);
- printf("SENNTTT OPET\n\n");
- }
- closesocket(sock);
- WSACleanup(); /* Cleanup Winsock */
- exit(0);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement