|
68userさんへ 親切にお答え下さって、ありがとうございます。 ether_aton とか ether_hostton ですか、探してみます。 実は僕もUNIX ネットワークプログラミング第2版 Vol.1を 持ってますが、はっきりいって、C言語すらおぼつかない僕 には辛いです(笑) たしかにLinuxではSOCK_PACKETを使うと本には書いてあり ましたが、Kernel2.2以降?からはPF_PACKETを使えと、man ページに書いてあったものですから、それを使ってます。 また、libpcapのソースも落としましたが、書き換えるのは 僕には不可能でした(苦笑) ところで、僕は何をしたかったのかというと、自分で任意の プロトコルをつくってそれで通信させてみようということだ ったんです。無謀とお思いでしょうが、やらなきゃならんの です。卒業のために…。とにかくがんばってみます。 ありがとうございました。 |
|
早速、回答してくださいまして、ありがとうございます。 どこまでわかっているか、ということなので書きますが、 ソケットの生成とかは、できています。 サンプルとかを真似して、クライアント/サーバで動かしてみました。 fork()で、マルチクライアントにもできています。 でも、select()を組み合わせると、よくわかりません。 動作は、教えてもらったページとかで、なんとなくわかるのですが、 それをCでやろうとすると、わからなくなります。 select[1]とかと書いて、タイムアウトの時間を指定してやると、 それをすぎても読み出せない時にはタイムアウトしたっていうことで 検出できるんですか? よろしくお願いします。 |
|
追伸です。 ソースとかは、まだ、ほとんど、サンプルとかのechoサーバとかなので、 書きませんでした。 |
|
すみません、もう一つ質問です。 送信するデータで、データの最初に全データの長さが入っていて、 その次に、データのIDが入っていて、その後にデータの本文が 入っているというものを受信する時の方法についてなんですが、 それを読む時、最初のデータの長さとIDを読んで、その後で データの本文を読みたいのですが、構造体みたいなのを用意して、 そこに格納しようと思っています。 データの長さはu_longで4byteで、 IDは、0x00100101(u_longで4byte)とかという番号で、 データの本文は、u_shortで2byte+longで4byte+char[8]です。 socketでの送信用のchar型からキャストしてみようと しているんですが、最初の00がうまく行きません。 (送信する時のキャストはうまく行っています。受信する時は、 ちゃんと全部、もとのままのデータを受け取っています。) これは、socketの扱い方の方のhton()とかでやらないと いけないのですか? それから、もしかすると、Cの方の書き方が下手糞なせいなのかも しれないのですが、構造体に格納するのがうまく行かないので、 たとえばで良いので、もしも良かったら、例を教えてくれませんか? お願いします。 |