68user's page 掲示板

Prev< No. 3859〜3867> Next  [最新発言に戻る] [過去ログ一覧]
No. 3859 # samsara 2004/07/13 (火) 15:57:04
はじめまして、ネットワークプログラミングの勉強をしています。
Windows上でネットワーク関連のソフトウェアを作成したことはあるのですが、
ライブラリを使用していた為、SocketAPI等はあまり深い知識がありません。
そこで教えていただきたい事があるのですが、ここの掲示板でよろしいでしょうか?

1.WindowsのSocketとUNIXのSocketで関数の違い等あるのでしょうか?
2.UNIXのSocketでも、Linux、FreeBSD、Solaris等で違いがあるのでしょうか?

参考情報等教えていただきたいと思ってます。宜しくお願い致します。

No. 3860 # tototo 2004/07/13 (火) 16:51:20
順番変更しなければならない理由はないのですが、
PATHの順番を変更するやり方
はあるのかが気になったのため、お聞きしました。

No. 3861 # 68user 2004/07/13 (火) 21:46:58
>>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
とかですかねぇ。

No. 3862 # 68user 2004/07/13 (火) 22:24:51
ここ数ヶ月 (web 引越し前)、マルチポストしたり回答しても返事すら
書かない質問者が多く、困っていました。困るだけならまぁいいんですが、
わたしの web 更新のモチベーションを大いに下げてくれました。

というわけで、↑に書いたとおり、
      http://x68000.q-e-d.net/~68user/cgi-bin/wwwboard.cgi?howtouse
を読まない・読んでも守りたくない人は質問しないでください。
もちろん、これらのルールを守っておられる方々の質問は引き続き
歓迎いたします。

これはマナーではなく、この掲示板のルールであることに注意して
下さい。これが気にいらない方は (当然ながら) この掲示板を見ない
自由があります。

web 引越し後は以前のような不届きな質問者はいなくなったようで、
とてもうれしく思っています。

No. 3863 # samsara 2004/07/13 (火) 23:01:52
68userさま、回答ありがとうございます。
教えていただいたページをじっくり読んでみます。

No. 3864 # 68user 2004/07/14 (水) 02:36:01
>>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);

No. 3865 # つばき [E-mail] 2004/07/14 (水) 10:40:53
68user様。回答ありがとうございました。
自分なりに調べまして解決しました。助言を下さってありがとうございます。

No. 3866 # 2004/07/14 (水) 11:17:29
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ではないでしょうか
というファイルができる。

No. 3867 # ニッタン 2004/07/14 (水) 12:18:27
68userさん、はいそうです。
ここまで調べるのは苦労しませんでしたか?
私はマスタリングTCP/IP SSL/TLS編がなければ
未だに判らなかったと思います。

Prev< No. 3859〜3867> Next  [最新発言に戻る] [過去ログ一覧]