お世話になります
環境:WindowsNT4.0 VC6.0のクライアント、サーバー

多数のクライアント側からサーバ1台にあるファイルを
読み書きするプログラムは、できますか?

方法、参考文献、参考URLあれば教えてください

宜しくどうぞ

A 回答 (2件)

別に難しいことはないですよ。



Win32APIをコールして(WNetAddConnection2だったかな?)
サーバに接続し、必要ならばドライブ接続もします。

後は普通にファイルオープン→リード/ライト→ファイルクローズ
という一連の処理を記述します。

注意点としては、書込み時は排他がきっちりかかるようにすること
と、ファイルオープン時に他のクライアントが排他をかけているか
どうか気をつけるくらいでしょうか。

この回答への補足

cse_riさん
早々の回答ありがとうございます

WNetAddConnection2はネットワークの割り当てをする
関数なんですね。
さらに質問なのですが、
排他制御は具体的にどうやってかけるのですか?

たびたび、すみませんが宜しくおねがいします

補足日時:2001/08/07 15:12
    • good
    • 0

例えば、serverという名称のマシンに共有名shareの


なかにあるfileとうファイルを使うという程度のことなら、

fopen("\\\\server\\share\\file","r")

で、できます。あとは、いつもローカルの場合と同じ。

ただ、書くことがあるなら、排他制御をしっかりと
プログラムする必要はありますね。

どうするかは、ケースバイケースかな。

この回答への補足

terra5さん
回答ありがとうございます。

意外と簡単なことで悩んでいました。

ところで排他制御はどのように行うのですか?

度々の質問ですみませんが回答、宜しくお願いします。

補足日時:2001/08/07 15:19
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qネットワークの中のIPアドレスを一覧で表示は可能ですか

自分の作ったネットワークの中のIPを全部集めてきて一覧で表示できるコマンド、もしくはソフトウェアはないでしょうか?例えば100台のコンピューターが全てONでネットワークに接続している時、それらのコンピューターのIP、MACアドレスを集めて一覧で表示できないかなと思い質問させて頂きました。

Aベストアンサー

http://www.forest.impress.co.jp/lib/inet/servernt/netanlz/netenum.html

QVC6.0からVC7.0への移植

VisualStudioでプログラムしています。
このたび、VC6.0で作ったプログラムをVC7.0(.NET?)に移植しようとしたところ、
「MSVCIRTD.LIBがありません」とエラーが出たので、
Microsoft Visual Studio\VC98\LibにあったMSVCIRTD.LIBをコピーしてコンパイルを通したのですが、
今度はvc60.pdbが見つからないというwarningが出てしまいます。
warningなので無視して実行しようとすると、
強制終了してしまいます。

VC6.0で作ったプログラムのファイル構成と比べると、
確かにvc70.pdbはあるのですが、vc60.pdbはありません。
ご存知の方がいましたら、問題の解決方法をご教授くださいよろしくお願いします。

Aベストアンサー

visual studio c++.net ですよね
(MSVCIRTD.LIB)
msvcirtd.libは
C:\Program Files\Microsoft Visual Studio .NET\Vc7\lib
にありますよ
ほかのサンプルでためして、同じようでしたら
インストールがおかしいのではないでしょうか

Qコマンドプロンプトを使ってネットワークの一覧を表示

コマンドプロンプトを使ってネットワークの一覧を表示する方法
LAN内のPCやプリンタ、ネットワーク機器のIPアドレスを
調べて一覧にするコマンドプロンプトのコマンドはありませんか?
固定IPかDHCPから割り振られたIPか、わかると更に嬉しいです。

なければそういった機能があるソフトでもいいので
ご紹介頂けると幸いです。

Aベストアンサー

こちら参考に
★lan内のpcをipアドレスで一覧表示したい | OKWave
http://oshiete.goo.ne.jp/qa/5829669.html

QVC++6.0からVC++.NETへの変遷について

VC++がようやく分かり出したこの頃ですが、今日本屋に立ち寄ったら、なっ なんとVC++の本がほとんど無くなり、代わりにVC++.NETとVC#ばかりになっていました。

C#はVC++とは違うと聞いていたのですが、読んでみるとVC++.NETもかなり違ってました。
(かなり違うという表現は、各人の状況により意見が異なると思いますが)

私のような本を見ながらコードを打って勉強している初心者にとって、VC++.NETの本ではVC++6.0を動かすことができません。

今から勉強する人や本を買って勉強しようとしている人あるいは、コンパイラを手に入れようとしている人はVC++.NETに移行してしまわざるを得ないのでしょうか?

すでにVC++6.0を十分活用出来ている人も、時代の流れでNETやC#を勉強していかなければならないのでしょうか?

つまり、単なるバージョンアップとは一線をなす変更がなされたということなのでしょうか?

良くご存知の方見解をお願いします。

Aベストアンサー

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したものが無駄になることはありません。
たぶん、.NET環境の開発には、C++よりもC#やVB.NETを利用することが
多くなると思いますが、C++を理解していることはプラスにはなってもマイナスには
なりませんので、頑張って下さい。

.NET関連のサイトを2つご紹介しておきます。ご参考に。
http://www.microsoft.com/japan/msdn/library/default.asp
http://www.atmarkit.co.jp/fdotnet/index.html

すぐにではありませんが、.NETに移行せざるを得なくなるでしょうね。
ただ、開発環境という面では、VS.NETにはC++が含まれており、C++の部分は
従来のC++も利用できるようになっていて、これはアンマネージC++と呼ばれています。
C++で.NETのコードを作成する時は、マネージC++という拡張仕様で記述します。
また、従来のコードと.NETフレームワーク用コードを混在させてアプリケーションを
開発することもできます。これは、相互運用という形で説明されています。

ということですので、C++で習得したもの...続きを読む

Qネットワーク内のIPアドレスを調べるには

早速ですが、同じネットワーク内で使われているIPアドレス全てを一覧表示する事の出来るコマンドがあったような気がするのですが、全く分からなくなりました。
分かる方回答をお願いします。

Aベストアンサー

WIN2kならipconfig
WIN9Xならwinipcfg

QVC++6.0で作成したクラスをVB6.0で使うには?

初めて投稿します。
プログラミング初心者の為、初歩的な質問になるかもしれませんがご容赦下さい。普段、主にVisual Basic6.0(以下VB6.0)でプログラミングを行なっています。
VB6.0には演算子のオーバーロードする機能がない(?)ため、Visual C++6.0(以下VC++6.0)でプログラミングを行い、VC++6.0で作成したクラスをVB6.0で呼び出して使用したいと考えています。
インターネット上でいろいろと調べてみたのですが、その方法がわからず投稿させていただきました。VC++6.0で作成したDLLの中の関数をVB6.0で呼び出して使用する方法はわかったのですが、クラスということになると、DLLでは無理なのでしょうか?
どなたか、VC++6.0で作成したクラスをVB6.0で呼び出す方法、または勉強方法(教材)などを教えていただけると助かります。
宜しくお願いいたします。

Aベストアンサー

 こんばんは。

 純粋なC++では無理ですが、要はCOM/OLE/ActiveX等、そっち系で作成すれば可能です。
 但し、operator += ()等の様なオーバーロード演算子は不可能です。

 COMを1から実装するのは、顔が歪む程大変な事なので、MFCやATLを使用した方が効果的です。

 ATLの使用方法と実装については、以下が参考になります。
 http://www.koutou-software.co.jp/junk/use-atl-mystruct.html

 自身で検索する際には
 「COM OLE ActiveX ATL IDL バイナリインターフェース」等のキーワードを使うと見つかり易いでしょう。

 後、私の所有しているCOMの書籍によれば、「GUID」を作成する際、オフライン状態で作成すると、世界全国の誰かが作成した「GUID」と衝突を起こす可能性があると書いてありました。
 恐らく、ATL等のウィザードでコードを自動作成している時、一緒に作成される「GUID」にも、同じ事が言えるかもしれません(多分その筈)。
 取り敢えず、オンライン状態で着手される事を、強くお勧めします。

 こんばんは。

 純粋なC++では無理ですが、要はCOM/OLE/ActiveX等、そっち系で作成すれば可能です。
 但し、operator += ()等の様なオーバーロード演算子は不可能です。

 COMを1から実装するのは、顔が歪む程大変な事なので、MFCやATLを使用した方が効果的です。

 ATLの使用方法と実装については、以下が参考になります。
 http://www.koutou-software.co.jp/junk/use-atl-mystruct.html

 自身で検索する際には
 「COM OLE ActiveX ATL IDL バイナリインターフェース」等のキーワードを使...続きを読む

Qネットワーク上の全ての固定IPのPC数とそのIPを知る方法

現在所属しているネットワーク上にある全ての固定IPのデバイス(PCなど)の数とそのIPアドレスを知る方法はありませんでしょうか?
固定IPアドレスにアクセスして、少しでもそのデバイスに関する情報も知る方法があればそれも教えていただきたいです。

例えば、ネットワーク上のネットワークプリンタがあり、そのプリンタは固定IPだがそのIPアドレスが何かわからないときなどに利用します。

Aベストアンサー

こんなフリーソフトがあります↓
http://www.forest.impress.co.jp/lib/inet/servernt/netanlz/netenum.html
うちの環境下では IP アドレス,コンピュータ名,MAC アドレス,ベンダー名,
所属(Workgroup)などが表示されましたが,ネットワークプリンタは発見
出来ませんでした.何か設定が悪いのかも知れません.

QMFC VC++ で4G以上のファイルの読み書き

MFC VC++ で4G以上のファイルの読み書きをしたいのですが何を使えばよいのでしょうか?

Aベストアンサー

64 ビット環境向けなら size_t が64 ビット化されているので標準の C ライブラリで大丈夫……なのかなぁ。
https://msdn.microsoft.com/ja-jp/library/3b2e7499.aspx

そうでないなら Win32 API の助けを借りることになりそうです。
http://rarara.cafe.coocan.jp/cgi-bin/lng/vc/vclng.cgi?print+200505/05050046.txt
https://msdn.microsoft.com/ja-jp/library/cc429126.aspx

Qルータ同士のpingは、同ネットワークIPじゃないとダメ?

ルータ同士のpingは、同ネットワークIP上じゃないとダメ??

ネットワーク関連の問題・解答で、つまずいています。

ルータ1とルータ2がシリアルで直接接続されているとして、
お互いのpingが通らないトラブルになっているとします。
ルータ1のIPアドレスが10.1.1.1/24で、
ルータ2のIPアドレスが10.11.1.2/24
となっています。

原因はなぜでしょうか?
という問題です。

解答は、異なるネットワークのIPアドレスが設定されているから。
とあるのですが、いまいちピンときません。

プレフィックス長が24なので、第3オクテットまでネットワーク部なのはわかります。
ルータ1が10.1.1.0、ルータ2が10.11.1.0のネットワークで、異なっているのも分かります。

なぜ、ネットワークが異なると、pingが通らなくなってしまうのでしょうか。
ルータはそもそもセグメントを分割するわけですから、
異なっていていいんじゃないかとおもっているのですが、
ルータ同士のセグメントにおいては、同じでなければいけないのでしょうか?

         ↓ルータ1       ↓ホストB
□--------●-------○--------□
↑ホストA          ↑ルータ2

以上の様なルータにおけるIPアドレスは、
それぞれ2つもっており、ブロードキャストドメイン(=セグメント?)は3つあるとおもいます。

ホストA側のポートのIPと、ホストAのIPは同じネットワーク部を持たなければいけないのはわかります。
ルータ2に関しても。

でも、ルータ1とルータ2がなぜ同じネットワーク部を持たなければ、pingが通らないのでしょうか?
ルータは異なるIPアドレス、異なるネットワークIP同士の通信ができるものではないのでしょうか?

根本的に何か勘違いしているのだと思うのですが、どなたかご享受ください。

ルータ同士のpingは、同ネットワークIP上じゃないとダメ??

ネットワーク関連の問題・解答で、つまずいています。

ルータ1とルータ2がシリアルで直接接続されているとして、
お互いのpingが通らないトラブルになっているとします。
ルータ1のIPアドレスが10.1.1.1/24で、
ルータ2のIPアドレスが10.11.1.2/24
となっています。

原因はなぜでしょうか?
という問題です。

解答は、異なるネットワークのIPアドレスが設定されているから。
とあるのですが、いまいちピンときません。

プレフ...続きを読む

Aベストアンサー

>あるセグメントにおける通信では、同じネットワークIPでないと通信できない。

また混乱させてしまうとは思いますが、正確には「同一サブネット内の通信は、同じネットワークアドレスを持つノード同士でないとIP通信ができない」です。メディアレベルのブロードキャストは互いに受信できてしまいますから。

>これはルールとしてTCP/IPで定めていることなのでしょうか?

定めているといえば定めてますね。

>それとも物理的に不可能なのでしょうか?

よって、論理的に不可能、ということです。

またまた、混乱させることは本意ではないのですが・・・

実は、互いにデフォルトゲートウェイに自分のIPアドレスを設定すればIP通信はできてしまいます。このような抜け道的な方法を実装したメーカ(今は無きケーブルトロンとか、HPとか)もありました。L3と言っていましたが、L2.5と揶揄されたものです。このようなものは徒花のようなもので今はありませんから、気にする必要はありませんが。

QVC++でのiniファイルの読み書き

今Visual Studio 6.0 Professional Editionを使用して開発を行っています。

そこでiniファイルの読み書きを行う必要があるのですが、ほんとに初心者でどのようにすればいいのかわかりません。

そこで皆さんの知恵をお借りしたいのですが、
サンプルプログラムや役に立つサイトなどを教えていただきたいのです。

やることとしてはiniファイルからデータを読む。
プログラム中のデータをiniファイルの特定のセクションのキーに書き込むです。

よろしくお願いします。

Aベストアンサー

★API 関数で操作できますよ。
・MSDN のサイトでは
 http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/jpsysinf/html/Toppage_Registry.asp
 ここの
 GetPrivateProfileSection()
 WritePrivateProfileSection()
 かな。
・以上。

参考URL:http://wisdom.sakura.ne.jp/system/winapi/win32/win156.html


人気Q&Aランキング

おすすめ情報