クライアントがサーバーにファイルを送信し、サーバーがファイル名を新しい場所に格納するソケットプログラムを作成しています。私の質問です:クライアントがサーバーにファイル名を渡すとき、どのように新しい場所に同じ名前を使用してファイルを作成できます。ファイルハンドラは次のようになりますCで引数として渡されるファイルを作成する
fw=fopen("c://TestCopy","a+");
fopenがファイルを開くために渡されたファイル名を取得するために必要なことは何ですか。
クライアントがサーバーにファイルを送信し、サーバーがファイル名を新しい場所に格納するソケットプログラムを作成しています。私の質問です:クライアントがサーバーにファイル名を渡すとき、どのように新しい場所に同じ名前を使用してファイルを作成できます。ファイルハンドラは次のようになりますCで引数として渡されるファイルを作成する
fw=fopen("c://TestCopy","a+");
fopenがファイルを開くために渡されたファイル名を取得するために必要なことは何ですか。
ここでちょっと混乱しています。私が何をしたいことは、このだと思う:
fw = fopen(argv[1], "r");
...
// send the filename
send(server, argv[1], strlen(argv[1]) + 1, 0);
...
サーバー:
...
// receive the file name
int fileNameLen = recv(client, buffer, maxBufferSize, 0);
fopen(buffer, "w");
...
ここで、bufferはfopenによって使用されるファイル名を取得します。しかし、fopenが使うパスは何ですか?言い換えれば、クライアントが渡したargv [1]がC:\ Temp \ Test.txtの場合、サーバでC:\ Test.txtに保存されている同じファイルが必要です – Sarvavyapi
@Sarvavyapi次に、作成する方法を見つける必要がありますあなたが何かのクロスプラットフォームをしたい場合は簡単な問題ではない最後のパスのコンポーネントに等しい文字列。私はあなたが尋ねた質問に答えましたので、パスコンポーネントを取得するためのいくつかの研究を行います。 –
@リチャード:申し訳ありませんが、私はあなたに同意しない。質問は、この答えによって答えられたかどうかについて何らかの主張をするにはあまりにもあいまいである。あなたが何が尋ねられたのか分からなければ、最初に答えてはいけません。それがコメントのためのものです。 –
あなたは「同じ名前」と「新しい場所」とはどういう意味ですか? –
例:クライアントプログラムは以下のように動作します。 - .client.exe 127.0.0.1 100 IOC-LOGO.jpg。サーバーはファイル名を取得し、同じ名前で新しい場所に格納する必要があります。 – Sarvavyapi
これはまだあいまいです。 "同じ"名前と "新しい"場所、具体的にはどういう意味ですか? –