C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[5352] 윈도우에서 패킷을 보낼때...
박세율 [] 2907 읽음    2001-02-12 01:33
안녕하세요?
오랜만에 질문을 올려봅니다.

네트웍 프로그램밍을 하는중에 패킷을 만들다가
제대로 전송이 되지 않은거 같아서 질문을 드립니다.

윈도우 소켓api을 보니 socket2라는 버젼의 api도 있던데..
기존의 api와는 어떻게 다른지도 잘 모르겠더라구요
윈삭2에 대한 자료는 거의 찾기가 힘들고요..

우선 아래의 구조체를 사용해서 만들었는데 제대로 됀것인지
의문이 듭니다.
리눅스의 헤더파일에서 가져왔습니다 :)

typedef unsigned char u_int8_t;
typedef unsigned short u_int16_t;
typedef unsigned long u_int32_t;

struct iphdr
{
    unsigned int ihl:4;
    unsigned int version:4;
    u_int8_t tos;
    u_int16_t tot_len;
    u_int16_t id;
    u_int16_t frag_off;
    u_int8_t ttl;
    u_int8_t protocol;
    u_int16_t check;
    u_int32_t saddr;
    u_int32_t daddr;
    /*The options start here. */
};

typedef    u_int32_t tcp_seq;

struct tcphdr
  {
    u_int16_t th_sport;        /* source port */
    u_int16_t th_dport;        /* destination port */
    tcp_seq th_seq;        /* sequence number */
    tcp_seq th_ack;        /* acknowledgement number */

    u_int8_t th_x2:4;        /* (unused) */
    u_int8_t th_off:4;        /* data offset */

    u_int8_t th_flags;
#define    TH_FIN    0x01
#define    TH_SYN    0x02
#define    TH_RST    0x04
#define    TH_PUSH    0x08
#define    TH_ACK    0x10
#define    TH_URG    0x20
    u_int16_t th_win;        /* window */
    u_int16_t th_sum;        /* checksum */
    u_int16_t th_urp;        /* urgent pointer */
};


소켓은 아래의 함수로 시작했습니다.

if ((s = WSASocket(AF_INET, SOCK_RAW, 255, NULL, 0, 0)) == INVALID_SOCKET)
{
    perror("wsasocket");
    exit(s);
}

....
.... 패킷 구조체 초기화 부분
....

   i = sendto(s, packet, IPHDRSIZE + TCPHDRSIZE + data_size, 0,
             (struct sockaddr *)&sin_dst, sizeof(struct sockaddr));

이렇게 해서 패킷을 전송합니다.
그런데.. 제대로 대는것 같지 않아서 질문을 드려봅니다.
만들어낸 패킷은 tcp/ip에서 syn패킷입니다

netstat -an을 해보면 syn이라고 나와야 하는데.. 전혀 나오지 않습니다



PS
{
  예전에는 몰랐는데, 지금 보니 게시판이 무지 빠르네요
}


+ -

관련 글 리스트
5352 윈도우에서 패킷을 보낼때... 박세율 2907 2001/02/12
5355     Re:윈도우에서 패킷을 보낼때... 홍용혁 3401 2001/02/12
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.