68user's page 掲示板

Prev< No. 3139〜3144> Next  [最新発言に戻る] [過去ログ一覧]
No. 3139 # 金床 [URL] [E-mail] 2003/03/17 (月) 23:24:58
>>3135 koko
ソケットのクローズはどのAPIを使って(どんなソースコードで)行ってらっしゃいますか?
Winsockだと、shutdownを使わずにclosesocketを呼ぶとRSTフラグのセットされたパケットが飛ぶことが
あるような覚えがあります。

いずれにせよ、パケットキャプチャしてみると原因に近づけると思います。

No. 3140 # koko 2003/03/18 (火) 11:17:29
>>3139 金床
パケットをキャプチャしてみたところ、サーバからクライアントにRSTフラグのセットされたパケットは飛んでいました。

試したケースを整理します。
(1)accept直後にクライアントからの送信データをreadせずに、サーバ側から
write、closeすると、クライアントではサーバがwriteしたデータを受信できません。
(2)accept直後にクライアントからの送信データを1バイトでも良いのでreadし、サーバ側からwrite、closeすると、クライアントではサーバがwriteしたデータを受信できます。

(2)では、RSTフラグのセットされたパケットが飛ぶ前に、FIN ACKがセットされたパケットとクライアントで受信させたいパケットが飛んでおり、(1)ではFIN ACKがセットされたパケットとクライアントで受信させたいパケットが飛んでいません。

サーバ側でクライアントの送信電文を1バイト読む事で動きが変わるようなのですが、この辺が何か関係があるのかもしれません。

ちなみに、APIは以下の通りです。
サーバ(UNIX):socket,bind,listen,accept,select,read,write,close
クライアント(WIN):socket,bind,connect,listen,recv,send,closesocket

サーバ側でのソケットのクローズは、acceptの戻り値を引数にしてcloseをしているのみで、shutdownはしていません。

赤色の文字は 「Windows 機種依存文字」か、いわゆる「半角カナ」です。 この掲示板では自動変換されますが、今後は使用しないで下さい

No. 3141 # 68user 2003/03/18 (火) 21:02:38
>>3138 ajmj
> FileHandle.pmを使って無名のファイルハンドラを作って、
> そこにCSVを入れて、$FTP->put(FILEHANDLA)でアップさせる
というのが実現可能なのかどうかはわかりませんが (できない
ような気がする)、別解としては

    1. put じゃなくて stor("ファイル名") を呼ぶと、Net::FTP::dataconn
          オブジェクトが返ってくるので、それに対して write する。

    2. POSIX::mkfifo で名前付きパイプを作り、fork して、
          子が CSV データを作成、名前付きパイプに書き込む。
          親は Net::FTP::put に名前付きパイプを渡す。

あたりですかね。1 は perldoc Net::FTP を流し読んだだけで、
できるかどうかわかりません。2 は試していませんが、一応実現は
できるでしょう。

>>3140 koko
    http://www.kt.rim.or.jp/~ksk/wskfaq-ja/newbie.html#howclose
ですかね?

あと、情報を小出しにせず、最小限まで削ったソースコードを最初に
載せれば、話が早そうなのになぁと思ったりします。

まぁわたしは Winsock 知らないのでアレですが。

No. 3142 # kaki 2003/03/18 (火) 23:00:14
はじめまして、お世話になります。
kakiと申します。

現在、Linux(Redhat7.1 kernel2.4.2-2)、C言語にて
プログラムの作成をしております。

質問なのですが、プログラム上(C言語)からFD、CFなどのデバイスに
マウントし、FD、CF内のファイルを取得するということは
可能なのでしょうか?

お分かりになる方がおられましたら、ご教授お願いいたします。

No. 3143 # 金床 [URL] [E-mail] 2003/03/18 (火) 23:49:33
>>3140 koko
やっぱりRSTによる「異常終了」が原因のようですね。
shutdown()を使ってみると幸せになれると思います。

No. 3144 # 68user 2003/03/19 (水) 02:04:16
>>3142 kaki
mount(2) をどうぞ。あるいは DOS フォーマットならば mtools の
mtype あたりがお手軽かも。

ところで CF って何ですか? コンパクトフラッシュ?

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