Главная страница


ru.nethack

 
 - RU.NETHACK -------------------------------------------------------------------
 From : Denis Moujjoukhin                    2:5018/5       15 Jun 2003  00:17:08
 To : All
 Subject : что не так?
 -------------------------------------------------------------------------------- 
 
 
 компилю нижеследующее на:
 Borland C++ 5.5 for Win32 Copyright (c) 1993, 2000 Borland
 
 после запуска, по GetLastError получаю сообщение:
 "Требуемый адрес для своего контекста неверен".  Win2000. В чем проблема? если
 ли нормальный компилятор, с готовыми заголовками iphdr и udphdr?
 #include <stdio.h>
 #include <winsock2.h>
 #include <ws2tcpip.h>
 
 typedef struct mypacket {
  // ip header
  int ver:4;
  int ihl:4;
  int tos:8;
  int tot_len:16;
  int id:16;
  int flags:3;
  int frags:13;
  int ttl:8;
  int protocol:8;
  int crc:16;
  unsigned long saddr:32;
  unsigned long daddr:32;
 
  // udp header
  unsigned long source:32;
  unsigned long dest:32;
  unsigned long len:32;
  unsigned long udp_crc:32;
 
  // message on-boadr
  char msg[1000];
 
 } mypacket;
 
 void beep (char *msg) {
  MessageBox (0, msg, myname, MB_ICONSTOP);
  exit(0);
 }
 
 void main() {
  SOCKET s;
  WSADATA wsa;
  int sfdo=1;
  struct mypacket pkt;
  struct sockaddr_in sin;
 
  if (WSAStartup (0x101, &wsa)!=0)
   beep ("No winsock");
 
  s=socket(AF_INET, SOCK_RAW, IPPROTO_RAW);
  if (s==INVALID_SOCKET)
   beep ("socket (raw)");
 
  if (setsockopt(s, IPPROTO_IP, IP_HDRINCL, (const char *)&sfdo,
 sizeof(sfdo))!=0)
   beep ("IP_HDRINCL failure");
 
  memset (&pkt, 0, sizeof(pkt));
 
  strcpy (pkt.msg, "123");
 
 // fill packet
  pkt.source=htons(666);
  pkt.dest=htons(8160);
  pkt.len=htons(20+strlen(pkt.msg));
 
  pkt.ver=4;
  pkt.ihl=5;
  pkt.tos=0;
  pkt.tot_len=htons(28+strlen(pkt.msg));
  pkt.frags=0;
  pkt.id=htons(random(255));
  pkt.ttl=30;
  pkt.protocol=IPPROTO_UDP;
  pkt.saddr=inet_addr("192.168.4.8");
  pkt.daddr=inet_addr("192.168.1.2");
 
  sin.sin_family=AF_INET;
  sin.sin_port=htons(8160);
  sin.sin_addr.s_addr=inet_addr("192.168.4.8");
 
  sfdo = sendto (s, (char *)&pkt, 28+strlen(pkt.msg), 0, (struct sockaddr *)
 &sin, sizeof(sin));
  if (sfdo==SOCKET_ERROR)
   beep("can't send anything");
 
  closesocket (s);
  WSACleanup();
 }
 
                       IstrAlien
 --- GoldEd d2.50+
  * Origin: :: Mushroom Factory :: (2:5018/5)
 
 

Вернуться к списку тем, сортированных по: возрастание даты  уменьшение даты  тема  автор 

 Тема:    Автор:    Дата:  
 что не так?   Denis Moujjoukhin   15 Jun 2003 00:17:08 
 Re: что не так?   Alexandr Zirka   16 Jun 2003 22:46:40 
 Re: что не так?   •®ЄҐа   17 Jun 2003 05:44:04 
 что не так?   Denis Moujjoukhin   19 Jun 2003 10:21:27 
 что не так?   Sergey Vjikushin   17 Jun 2003 11:12:16 
 что не так?   •®ЄҐа   07 Jul 2003 12:01:36 
 Re: Re: что не так?   Victor A.Nesterenko   21 Jun 2003 10:41:18 
Архивное /ru.nethack/175653eebbc0a.html, оценка 1 из 5, голосов 10
Яндекс.Метрика
Valid HTML 4.01 Transitional