|
はじめまして、ネットワークプログラミングの勉強をしています。 Windows上でネットワーク関連のソフトウェアを作成したことはあるのですが、 ライブラリを使用していた為、SocketAPI等はあまり深い知識がありません。 そこで教えていただきたい事があるのですが、ここの掲示板でよろしいでしょうか? 1.WindowsのSocketとUNIXのSocketで関数の違い等あるのでしょうか? 2.UNIXのSocketでも、Linux、FreeBSD、Solaris等で違いがあるのでしょうか? 参考情報等教えていただきたいと思ってます。宜しくお願い致します。 |
|
順番変更しなければならない理由はないのですが、 PATHの順番を変更するやり方 はあるのかが気になったのため、お聞きしました。 |
|
>>3859 samsara > 1.WindowsのSocketとUNIXのSocketで関数の違い等あるのでしょうか? http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/bsd-compatibility.html など。 > 2.UNIXのSocketでも、Linux、FreeBSD、Solaris等で違いがあるのでしょうか? たとえば http://x68000.q-e-d.net/~68user/net/echo-3.html#6 の backlog とか、UDP で受信できる最大サイズを超えた場合の 処理などですかね。より詳しいことを知りたいなら http://x68000.q-e-d.net/~68user/net/link-book.html 「UNIX ネットワークプログラミング第2版 Vol.1」 をどうぞ。後は http://apr.apache.org/ などのライブラリのソースの #if 部分をとことん読む、などなど。 >>3860 tototo > PATHの順番を変更するやり方 PATH=`echo $PATH | sed 's@/usr/bin:@@'`':/usr/bin' とか for i in `echo $PATH | tr ':' ' '`; do いろいろ done とかですかねぇ。 |
|
ここ数ヶ月 (web 引越し前)、マルチポストしたり回答しても返事すら 書かない質問者が多く、困っていました。困るだけならまぁいいんですが、 わたしの web 更新のモチベーションを大いに下げてくれました。 というわけで、↑に書いたとおり、 http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?howtouse を読まない・読んでも守りたくない人は質問しないでください。 もちろん、これらのルールを守っておられる方々の質問は引き続き 歓迎いたします。 これはマナーではなく、この掲示板のルールであることに注意して 下さい。これが気にいらない方は (当然ながら) この掲示板を見ない 自由があります。 web 引越し後は以前のような不届きな質問者はいなくなったようで、 とてもうれしく思っています。 |
|
68userさま、回答ありがとうございます。 教えていただいたページをじっくり読んでみます。 |
|
>>3845 ニッタン 自分用のメモ。ソースが SSL_CTX *ctx = SSL_CTX_new(SSLv23_client_method()); SSL ssl = SSL_new(ctx); SSL_connect(ssl); となっていたとして、 SSL_CTX *SSL_CTX_new(SSL_METHOD *meth){ ret->method=meth; SSL_METHOD *SSLv23_client_method(void){ SSLv23_client_data.ssl_connect=ssl23_connect; int ssl23_connect(SSL *s) ret=ssl23_client_hello(s); static int ssl23_client_hello(SSL *s) RAND_pseudo_bytes(p,SSL3_RANDOM_SIZE); int RAND_pseudo_bytes(unsigned char *buf, int num) const RAND_METHOD *meth = RAND_get_rand_method(); return meth->pseudorand(buf,num); /* (*1) */ const RAND_METHOD *RAND_get_rand_method(void) default_RAND_meth = RAND_SSLeay(); /* (*2) */ return default_RAND_meth; static int ssleay_rand_pseudo_bytes(unsigned char *buf, int num){ ret = RAND_bytes(buf, num); static int ssleay_rand_bytes(unsigned char *buf, int num) if (ok){ ... } else { RANDerr(RAND_F_SSLEAY_RAND_BYTES,RAND_R_PRNG_NOT_SEEDED); ときて「PRNG not seeded」エラーになる、てな感じですかね。 (*1) RAND_METHOD rand_ssleay_meth={ ssleay_rand_seed, ssleay_rand_bytes, ssleay_rand_cleanup, ssleay_rand_add, ssleay_rand_pseudo_bytes, ssleay_rand_status }; typedef struct rand_meth_st { void (*seed)(const void *buf, int num); int (*bytes)(unsigned char *buf, int num); void (*cleanup)(void); void (*add)(const void *buf, int num, double entropy); int (*pseudorand)(unsigned char *buf, int num); int (*status)(void); } RAND_METHOD; (*2) RAND_METHOD *RAND_SSLeay(void) return(&rand_ssleay_meth); |
|
68user様。回答ありがとうございました。 自分なりに調べまして解決しました。助言を下さってありがとうございます。 |
|
To UNIXの部屋管理者様 もしかすると変なことを行ってるかもしれませんが。 cp -r の項目で以下の解説が有りますが。 -R ディレクトリを再帰的にコピーする ディレクトリ dir1 以下に、ファイル foo・bar があった場合、 % cp -R dir1 dir2 は、ディレクトリ dir2 の下にディレクトリ dir 1をコピーする。つまり dir2/dir1/foo、dir2/dir1/foo <<<<<<<<<の二項目はdir2/dir1/barではないでしょうか というファイルが新たに作成される。一方、 % cp -R dir1/ dir2 とすると(`/'を付けると)、dir2 の下に dir1 以下のファイル・ディレクトリをコピーする。つまり dir2/foo、dir2/foo <<<<<<<<<同様にの二項目はdir2/barではないでしょうか というファイルができる。 |
|
68userさん、はいそうです。 ここまで調べるのは苦労しませんでしたか? 私はマスタリングTCP/IP SSL/TLS編がなければ 未だに判らなかったと思います。 |