ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
1 июля
63697 Топик полностью
ASDFS, USB-гуру (24.07.2006 19:22, просмотров: 40) ответил Apтём на UDP-сокеты
На пример работающего забинденного сокета. Где ошибка у тебя - не разбирался. Если что где недовырезал или перевырезал просьба не пинать а стучаться в мыло.

  WSADATA wsaData;
  struct sockaddr_in local, to, from;
  int fromlen, i, _i;
  SOCKET S;
  time_t T;

  byte buf[64000];
  signed long Ready, Ready2;
  BOOL Broadcast = true;

  if (WSAStartup(0x202,&wsaData) != 0) {
    WSACleanup();
    throw Exception("WinSock init failed.");
  }

  __try {
        S = socket(AF_INET, SOCK_DGRAM, IPPROTO_IP);
        if (S == INVALID_SOCKET) throw Exception("Can not create socket.");

        local.sin_family = AF_INET;
        local.sin_port = htons(5555);
        local.sin_addr.s_addr = htonl (INADDR_ANY);
        bind(S, (struct sockaddr*)&local, sizeof(local));
        local.sin_addr.s_addr = htonl (INADDR_BROADCAST);
        setsockopt(S, SOL_SOCKET, SO_BROADCAST, (char *) &Broadcast, sizeof(Broadcast));
        i = 1000;
        setsockopt (S, SOL_SOCKET, SO_RCVTIMEO, (char *)&i, sizeof(i));
        i = 1000;
        setsockopt (S, SOL_SOCKET, SO_SNDTIMEO, (char *)&i, sizeof(i));

        to.sin_family = AF_INET;
        to.sin_addr.s_addr = htonl (INADDR_BROADCAST); //INADDR_BROADCAST - 1; //inet_addr("255.255.255.255");
        to.sin_port = htons(5002);
        sendto(S, String1, sizeof(String1), 0, (struct sockaddr FAR *)&to, sizeof(to));

        T = time(NULL);
        do {
                fromlen = sizeof (from);
                Ready2 = recvfrom(S, buf, sizeof(buf), 0, (struct sockaddr*)&from, &fromlen);
                if (Ready2 != -1) {
                }
        } while (time(NULL) - T < 1);
        closesocket(S);
  }
  __finally {
    WSACleanup();
  }