C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[1]: RAWソケット送信ぷろぐらむ


(過去ログ 74 を表示中)

[トピック内 3 記事 (1 - 3 表示)]  << 0 >>

■43587 / inTopicNo.1)  RAWソケット送信ぷろぐらむ
  
□投稿者/ Adrian Beltre (1回)-(2009/11/13(Fri) 00:02:28)

分類:[C/C++] 

現在C言語でRAWソケットのプログラムをしています。そして次のプログラムを実行しました。

//Copyright(c) 2003-2004, shira.
//All rights reserved.

#include <stdio.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include "ip.h"

void printusage(char *);
void printbit(int, int);

int main(int argc, char *argv[]) {
struct sockaddr_in sin;
struct in_addr src;
struct ip *ip;
int sock;
int res;
int on=1;

//入力チェック
if(argc!=3) {
printusage(argv[0]);
exit(1);
}

memset(&sin, 0, sizeof(struct sockaddr_in));
src.s_addr=inet_addr(argv[1]);
sin.sin_family=PF_INET;
sin.sin_addr.s_addr=inet_addr(argv[2]);
sin.sin_port=0;

/* ソケットの作成 */
sock=socket(PF_INET, SOCK_RAW, IPPROTO_RAW);
if(sock==-1) {
perror("socket()");
exit(1);
}

/* ソケットのオプションの設定 */
res=setsockopt(sock, IPPROTO_IP, IP_HDRINCL, &on, sizeof(int));
if(res==-1) {
perror("setsockopt");
exit(1);
}

/* パケットのバッファ確保 */
ip=(struct ip *)malloc(sizeof(struct ip));

/* IP Header */
ip->iph.ip_v = 4;
ip->iph.ip_ihl = sizeof(struct ip_header)/4;
ip->iph.ip_tos = 0;
ip->iph.ip_len = htons(sizeof(struct ip));
ip->iph.ip_id = htons(242);
ip->iph.ip_off = htons(0x4000);
ip->iph.ip_ttl = 255;
ip->iph.ip_p = IPPROTO_RAW;
ip->iph.ip_sum = 0;
ip->iph.ip_src.s_addr = src.s_addr;
ip->iph.ip_dst.s_addr = sin.sin_addr.s_addr;
/* IP Header Option */
ip->iph.ip_opt.opt_flag=0xA0;
ip->iph.ip_opt.opt_len=sizeof(struct ip_option);
ip->iph.ip_opt.opt_data=0x00;

/* Headerの出力 */
printheader(ip);

/* パケットの送信 */
res=sendto(sock, ip, sizeof(struct ip), 0, (struct sockaddr *) &sin, sizeof(sin));
if(res==-1) {
perror("sendto()");
exit(1);
}
}

void printusage(char * p_name) {
printf("Usage: %s [Source IP] [Destination IP]\n", p_name);
printf("\n");
}

そしたら、普通は上手くいくはずがいつも"sendto() Message too long"というエラーが出てきます。どうか対処法が分かる方は書き込みをお願いします。

引用返信 編集キー/
■43588 / inTopicNo.2)  Re[1]: RAWソケット送信ぷろぐらむ
□投稿者/ (報告) (1回)-(2009/11/13(Fri) 00:28:47)
No43587 (Adrian Beltre さん) に返信
> 現在C言語でRAWソケットのプログラムをしています。そして次のプログラムを実行しました。

  この行為を、マルチポストって言うんです

  http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=25784&rev=&no=0

引用返信 編集キー/
■43596 / inTopicNo.3)  Re[1]: RAWソケット送信ぷろぐらむ
□投稿者/ .SHO (1042回)-(2009/11/13(Fri) 08:38:12)
変数 ip が実態じゃなくポインタだから。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -