Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. General Programming
  3. C / C++ / MFC
  4. Socket Program

Socket Program

Scheduled Pinned Locked Moved C / C++ / MFC
help
2 Posts 2 Posters 0 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • E Offline
    E Offline
    esepich
    wrote on last edited by
    #1

    This code keeps on tripping the sendto(); failed if statement. I can't figure this out. Any help is much appreciated. Thank you. void CSSPingDlg::OnPing() { // TODO: Add your control notification handler code here CIPAddressCtrl *ipaddressctrl = (CIPAddressCtrl *) GetDlgItem(IDC_IPADDRESS); CEdit *editbox = (CEdit *) GetDlgItem(IDC_EDIT); byte field1,field2,field3,field4; char ipchar[100]; DWORD dip; WSADATA wsaData; SOCKET sock; static ECHOREQUEST echo_req; struct sockaddr_in sin; ipaddressctrl->GetAddress(field1,field2,field3,field4); sprintf(ipchar, "%d.%d.%d.%d",field1, field2, field3, field4); dip = inet_addr(ipchar); if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { AfxMessageBox("WSAStartup failure!",MB_OK); } if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) == SOCKET_ERROR) { AfxMessageBox("Error starting socket",MB_OK); } sin.sin_family = AF_INET; sin.sin_port = htons(0); sin.sin_addr.s_addr = dip; echo_req.icmpHdr.icmp_type = ICMP_ECHOREQ; echo_req.icmpHdr.icmp_code = 0; echo_req.icmpHdr.icmp_cksum = 0; echo_req.icmpHdr.icmp_id = 1; echo_req.icmpHdr.icmp_seq = 1; memset(echo_req.cData, ' ', REQ_DATASIZE); echo_req.icmpHdr.icmp_cksum = checksum((unsigned short *)&echo_req, sizeof(ECHOREQUEST)); if (sendto(sock, (const char *) &echo_req, sizeof(ECHOREQUEST), 0, (SOCKADDR *) dip, sizeof(SOCKADDR_IN)) == SOCKET_ERROR) { AfxMessageBox("sendto() failed: %d\n", MB_OK); } closesocket(sock); WSACleanup(); }

    P 1 Reply Last reply
    0
    • E esepich

      This code keeps on tripping the sendto(); failed if statement. I can't figure this out. Any help is much appreciated. Thank you. void CSSPingDlg::OnPing() { // TODO: Add your control notification handler code here CIPAddressCtrl *ipaddressctrl = (CIPAddressCtrl *) GetDlgItem(IDC_IPADDRESS); CEdit *editbox = (CEdit *) GetDlgItem(IDC_EDIT); byte field1,field2,field3,field4; char ipchar[100]; DWORD dip; WSADATA wsaData; SOCKET sock; static ECHOREQUEST echo_req; struct sockaddr_in sin; ipaddressctrl->GetAddress(field1,field2,field3,field4); sprintf(ipchar, "%d.%d.%d.%d",field1, field2, field3, field4); dip = inet_addr(ipchar); if (WSAStartup(MAKEWORD(2,2), &wsaData) != 0) { AfxMessageBox("WSAStartup failure!",MB_OK); } if ((sock = socket(AF_INET, SOCK_RAW, IPPROTO_ICMP)) == SOCKET_ERROR) { AfxMessageBox("Error starting socket",MB_OK); } sin.sin_family = AF_INET; sin.sin_port = htons(0); sin.sin_addr.s_addr = dip; echo_req.icmpHdr.icmp_type = ICMP_ECHOREQ; echo_req.icmpHdr.icmp_code = 0; echo_req.icmpHdr.icmp_cksum = 0; echo_req.icmpHdr.icmp_id = 1; echo_req.icmpHdr.icmp_seq = 1; memset(echo_req.cData, ' ', REQ_DATASIZE); echo_req.icmpHdr.icmp_cksum = checksum((unsigned short *)&echo_req, sizeof(ECHOREQUEST)); if (sendto(sock, (const char *) &echo_req, sizeof(ECHOREQUEST), 0, (SOCKADDR *) dip, sizeof(SOCKADDR_IN)) == SOCKET_ERROR) { AfxMessageBox("sendto() failed: %d\n", MB_OK); } closesocket(sock); WSACleanup(); }

      P Offline
      P Offline
      Phil Speller
      wrote on last edited by
      #2

      I haven't played with raw sockets or icmp but on a quick scan of your code the use of (SOCKADDR*)dip in the sendto fn looks wrong - don't you mean to use (SOCKADDR*)sin instead? Phil

      1 Reply Last reply
      0
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Don't have an account? Register

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • World
      • Users
      • Groups