Avatar billede h7iws Nybegynder
19. januar 2005 - 16:42 Der er 4 kommentarer

Msn i console.

Hey folkens herinde :D
Ville lige vide om i er stødt på noget kode eller lignende til c++, der kan få msn (mesenger) til at gå ind i min konsol app. i c++?
Regner med at data over msn er krypteret, men der er sikkert en eller anden der har lavet noget mod det, eller med det?

Hvis i har noget kode, eller et link, gider i så ikke lige smide det her?

Smil
Avatar billede h7iws Nybegynder
19. januar 2005 - 16:43 #1
/forresten, vil gerne at programmet kører sepperat, dvs. at msn ikke skal være åbent!
- skal bare køre over det, connecte til folk, chatte, ikke andet !
Avatar billede h7iws Nybegynder
19. januar 2005 - 16:49 #2
/ og kom ikke og sig at google er min ven ...
- hvis den er min ven, hvorfor hjælper den mig så ikke med at finde det jeg søger ?
Avatar billede bertelbrander Novice
19. januar 2005 - 20:05 #3
Jeg lavede for nyligt en lille stump kode der konnecter til msn, sender en besked og læser og udskriver svar. Det kunne måske bruges som en start. Det er en mindre omskrivning af et program af arne_v.

Der er såvidt jeg ved en hel protokol som du skal implementere, du kunne starte med at kikke her:
http://www.hypothetic.org/docs/msn/research/msnp10.php

#include <time.h>
#include <errno.h>
#include <windows.h>
#include <string>
#include <iostream>
#include <stdlib.h>

#define TIMEOUT 5 // Max waiting time in sec

std::string SendReceive(char *hostname, int port, const std::string &cmd)
{
  int sd, status, len, ix, tmp;
  struct sockaddr local,remote;
  struct hostent *hostinfo;
  fd_set ReadSet;
  struct timeval Time;

  // create
  sd = socket(AF_INET, SOCK_STREAM, 0);
  if(sd == SOCKET_ERROR)
  {
    std::cerr << "Error creating socket: " << WSAGetLastError() << std::endl;
    return "";
  }

  // bind
  local.sa_family = AF_INET;
  memset(local.sa_data, 0, sizeof(local.sa_data));
  status = bind(sd, &local, sizeof(local));
  if(status == SOCKET_ERROR)
  {
    std::cerr << "Error binding socket: " << WSAGetLastError() << std::endl;
    closesocket(sd);
    return "";
  }
  // lookup host
  hostinfo = gethostbyname(hostname);
  if(!hostinfo)
  {
    std::cerr << "Error looking up host: " << hostname << ", " << WSAGetLastError() << std::endl;
    closesocket(sd);
    return "";
  }

  // connect to host
  remote.sa_family = hostinfo->h_addrtype;
  memcpy(remote.sa_data + 2, hostinfo->h_addr_list[0], hostinfo->h_length);
  *((short *)remote.sa_data) = port;

  tmp = remote.sa_data[0];
  remote.sa_data[0] = remote.sa_data[1];
  remote.sa_data[1] = tmp;
  status = connect(sd, &remote, sizeof(remote));

  if(status)
  {
    std::cerr << "Error connecting to host: " << WSAGetLastError() << std::endl;
    closesocket(sd);
    return "";
  }
  // send request
  status = send(sd, cmd.c_str(), cmd.size(), 0);
  if(status == SOCKET_ERROR)
  {
    std::cerr << "Error sending request: " << WSAGetLastError() << std::endl;
    closesocket(sd);
    return "";
  }

  // read response */
  char resp[128]; // Read at most 128 bytes
  ix = 0;
  memset(&ReadSet, 0, sizeof(ReadSet));
  FD_SET(sd, &ReadSet);
  Time.tv_sec = TIMEOUT;
  Time.tv_usec = 0;
  len = 1;

  while(len > 0 && select(sd + 1, &ReadSet, 0, 0, &Time) > 0)
  {
    len = recv(sd, resp + ix, sizeof(resp) - ix - 1, 0);
    ix += len;
    Time.tv_sec = TIMEOUT;
    Time.tv_usec = 0;
  }
  resp[ix] = 0;
  closesocket(sd);

  return resp;
}

int main()
{
  WSADATA wsaData;
  WSAStartup(MAKEWORD(1, 1), &wsaData);

  std::string Responce = SendReceive("messenger.hotmail.com", 1863, "VER 1 MSNP10 CVR0\r\n");
  std::cout << "Received: " << Responce << std::endl;
}
Avatar billede h7iws Nybegynder
11. februar 2005 - 02:37 #4
Jeg takker for det, og har læst lidt på lektien, men det er vist lidt sværer end jeg troede!
Jeg tror jeg lige skal læse lidt på WSA, for at kunne sætte mig ind i hvordan det virker.
Men det kan da ikke være en umulig opgave at få det til at virke, der er jo programmer som f.eks. trilian der kører over messengers net [og også noget mere stabilt] ...
Men indtil videre, tak for indslaget :D og hold jer endelig ikke tilbage med at skrive, hvis i finder frem til noget smart eller bare et eller andet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester