Winsockを使わずにVBでSocketを利用したいと考えています.事情がありましてコンポーネントを使わずにSocket通信でサーバープログラムと通信を行いたいです.
APIなどでSocket関係の関数は用意されているのでしょうか?
宜しくお願いします.


OS:Windows2000+SP4
Visual Basic 6.0+SP5

A 回答 (2件)

ソケットで検索↓



参考URL:http://www.vbvbvb.com/jp/gtips/index.html
    • good
    • 0
この回答へのお礼

回答ありがとうございます.
たくさんの例がのっており大変助かりました.
今から1つずつ調べたいと思います。

お礼日時:2003/09/11 15:40

私もwsock32.dllのAPI関数だけ作ったことがあるけど、結構大変だったです。



私の場合は、下記を参考にして作りました。

参考URL:http://hp.vector.co.jp/authors/VA022513/program. …
    • good
    • 0
この回答へのお礼

回答ありがとうございます.
紹介して頂いたサイトのソースコードの解析を早速行います.

お礼日時:2003/09/11 15:39

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

このQ&Aを見た人はこんなQ&Aも見ています

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

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

QE39Aに適合するショックアブソーバ

ご存知の方がいれば、教えてください。
E39A(VR4)のショックアブソーバを社外品に交換しようと考えてます。
候補はカヤバのNEW SR SPECIALを考えています。しかしながら、メーカホームページには90年7月までしか対応できないように記載されており、90年12月登録の私の車には使用できないように見えます。
90年8月以降のE39A(VR4)でNEW SR SPECIALをご利用の方、いらっしゃいませんでしょうか。また、利用可否をご存知の方いらっしゃいませんでしょうか。事情があり、早急に知りたいと考えております。
何卒、ご回答のほどよろしくお願いいたします。

Aベストアンサー

古いGABのカタログで調べたところ(95,97年)、E39AギャランVR4は 87/10~92/3まで同じショックアブソーバーで大丈夫だと思います。

KYBのカタログが無いので、はっきりは分かりませんが、ABSが付いていたら、配線を留めるブラケットが無いのかもしれません。

QSocket通信で、通信終了のイベントが発生しない

クライアント(Windows)とサーバ(Unix)とSocket通信をするアプリを作っています。処理内容はクライアントのデータファイルをサーバに送信(アップデイト)し、サーバ側でデータを解析し、その結果を印刷するという手順です。
WinSockを使って、送信そのものはうまくいくのですが、サーバでデータを解析し結果を印刷するのに時間がかかり(10秒以上)、その間は送信終了のイベントが発生しません。これはサーバ側での処理を exec関数とwait関数で行っているので、正しい事態なのですが、データの送信が終わったら後はサーバ側で勝手にやって欲しいのです。サーバでの処理を system関数に置換えたり、バックグランド処理にしてもやはり処理が終わるまで送信終了のイベントが発生しません。何かいい方法をお教えください。

Aベストアンサー

なるほどー
うーむ難しいですねー

Winsock1.SendData HogeHoge
DoEvents
とすると、どうですか?

またはサーバーが解析処理に入る前に、DoEventsみたいなものをUNIX側で実行することは無理ですか?
非同期で実行はしているけど、その解析処理が占有しているために、クライアントに届かないなんてことは無いですか?

すいません。かなり推測でお話をさせていただいてます。_(._.)_

QBMW E39

BMW E39

室内にあるOBD2端子の場所ってどこですか?

Aベストアンサー

前期型っすか?後期型っすか?


前期型なら確かボンネットオープンで丸型でおなじみの独自形状の奴で、後期型だったら運転席右側の小物入れの上面、じゃなかったかなぁ。。。左ハンドルだとちょっと分かんねっす。

QVisual Basic 6.0でWin32APIを用いてRS-232

Visual Basic 6.0でWin32APIを用いてRS-232Cで通信するプログラムを作っています。
CreateFile()でポートを開き、ハンドル番号を得て、プログラム終了前にそのハンドルを指定してCloseHandle()シリアルポートをクローズします。

ところが、何らかの原因でそのハンドルのクローズを行わなかった場合(例えば、デバッグ中にプログラムを終了させる)、シリアルポートは開っぱなしのようで、再度プログラムを実行しようとするとCreateFile()でポートを開くことが出来ません。
この状態は、VB6を再起動しない限り続きます。

そこでお聞きしたいのですが、プログラム上で、現在シリアルポートを開いているハンドル番号を知る方法はあるのでしょうか?
開いたときにメモするのも煩わしいため、なんとかならないかと悩んでいます。

どうぞよろしくお願いします。

Aベストアンサー

VB6.0でデバック実行している場合、VCやVB.netなどど違い、VB6.0のIDEプロセスの内部で実行されます。そのため、質問のようにハンドルクローズを忘れたりすると、IDEがそのハンドル保持プロセスとなるため、ハンドルを無理やり指定してもう一度IDEで閉じさせるか、IDEそのものを落とすしか方法がなくなります。(正直ほとんどバグぢゃないのか?って気がしますが・・・)

対策方法は#2さんや#3さんが回答されている方法が現実的だと思います。

余談ですが・・・今VB6.0で作るのは正直オススメできないですね・・・Windows7ではデバックできないし・・・

QBMW(E39)足回りダンパーが変??

先日、E39(DT25・525i)の足回りのフラフラについて質問をしたところ、ありがたいアドバイスをいただきE39の530i純正ショック1台分(走行3万キロ)を購入し、今日、箱を空けてダンパーを手で割と強く押してみたら、ぐ~っと下がって、やがてぐ~っと戻ってきました。4本ともです。これってヘタリでしょうか?ちなみにダンパーは純正のザックスで、バンプラバーも割りときれいです。もしかすると急激に力が加わったときにはグッと堅くなる設定かもしれませんが・・・。どなたか教えてください!

Aベストアンサー

それだけでヘタっているとは判断出来ません。普通押し込んだロッドが戻って来るという事は『まだガスが抜けていない』という事ですので判断材料としては『いい方』の材料となります。ショックの抜けは車体に組み込んで実際に走行してみるか専用の計測器を使用して減衰力の測定をしてみないと判断出来ません。まあワタシなら『ショックだけは』中古を買いませんが。

Q1+(1+2)+(1+2+3)....+(1+2+...+N)の計算式をVBで・・

表すにはどうしたらいいでしょうか。
もう3時間くらい格闘しているのですが、
答えを出せません。

Dim S AS LONG
DIm N As Integer

Dim i As Integer
N = Val(TextBox1.Text)

S = 0
i = 1

For i = 1 To N Step 1
S = S + i

Next

Label4.Text = Format(S, "#,##0")

で、1+2+3+...+Nはいけるのですが、
上記の式は、Nが1づつ増えていくにしたがって、
Sの値が1 4 10 20 ...となっていくために、…。

どなたか、回答していただける方がおりましたら、
非常に助かります。
よろしくお願いいたします。。

Aベストアンサー

  Dim total    As Long
  Dim index    As Integer
  Dim index2   As Integer
  Const MAX_VALUE As Integer = 3
  '
  total = 0
  For index = 1 To MAX_VALUE
    For index2 = 1 To index
      total = total + index2
    Next index2
  Next index
  '
  MsgBox (total)
------------------------
こんなカンジでしょうか。

QBMW 5シリーズ(E39)のワイパー

BMW5シリ-ズ(E39)のワイパーですが、右ハンドルなのみワイパーは左ハンドル車と同じに成っていますが、なぜかわかりますでしょうか。

Aベストアンサー

最小限のコストで済ますためにハンドルの位置だけ付け替えているからです。
例えば仮にもう百万円でワイパーも付け替えますといわれてどれだけ買う人が増えるかですよね。

まあ、こういう車に乗っていると海外でレンタカーを借りてもあまり戸惑わず、決して悪いことだけではないと思います。

QVisual Basic 6.0

Visual Basicで
100から1までの数の中で3で割ると2あまる数を大きい順にでるようにプログラムしたいのですがどのようにすれば良いでしょうか?
詳しい方教えてください。

Aベストアンサー

For i = 100 To 1 Step -1
If i - (Int(i / 3) * 3) = 2 Then
Debug.Print i
End If
Next i

上記のプログラムでイミディエイトウィンドウに表示されます。

QBMW(E39)について

現在、1999年のE39に乗っています。
車に興味を持ち、いろいろな雑誌を読むうちにBMWを
購入しました。しかし興味はあってもなかなかエンジンやサスペンション等のハード的な事やメンテナンスなど理解できず、勉強の日々です。そこでBMW(特にE39)等を初級~中級レベルで扱っているサイトがありましたら教えて頂きたく思います。自分でも調べてみましたが有名なサイトは私にとって上級レベルでした。
あと、もしこの質問にご回答頂けるならば、その方でBMWオーナーであればBMWのどこが一番の魅力かを伺ってみたいです。私はいろんな車に乗ったわけではなく、よく言われているBMWはエンジンフィールが良い、という意見で購入を決めましたが、はっきりと「この感覚が良いと言われるものか」というのが解かりません。
幾つも質問して、わかり難くなりましたが、よろしくお願い致します。

Aベストアンサー

既にご存知のサイトかも知れませんが、、
おたっきーず:http://www.bohp.net/
BMW@FUN:http://www2s.biglobe.ne.jp/~i-zumi/
5シリーズの部屋:
http://www.ipc-tokai.or.jp/~tany/e39index.html

また、輸入車は情報が少ない上、対応するアタッチメント(exオーディオやキーレスアンサーバック等々など)が少なく苦労(苦心)します。そこも面白いところですが、、、。
ベントレーのマニュアルなどもあると心強いです。
こんな物:http://page7.auctions.yahoo.co.jp/jp/auction/g41571466

Qwinsock通信時エラーの回避

winsock通信でデータをクライアント側からサーバー側に送り、一定の条件でサーバー側からクライアント側にデータを戻すソフトを作成中なのですが、サーバー側が通信エラーの為か止まってしまいます。

サーバー側(winsock部分)記述

Private Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

Winsock1(Index).Close '接続を閉じる
Do While Not (Winsock1(Index).State = sckClosed)
DoEvents
Loop

On Error Resume Next
Winsock1(Index).Listen
If Winsock1(Index).LocalPort <> 0 Then
Winsock1(Index).LocalPort = 0

End If

End Sub


質問の整理ですが、
表示板にはギミックが付いておりそのギミックは止まらないのでパソコンのフリーズでは無い様子です。
で問題は通信部分だと推測されるのですが、そのエラーを起こした通信を破棄してもいいので、サーバー側の点数加算を止めない方法はありませんでしょうか。
また上記のWinsock1_Errorコードの記述じゃおかしいのでしょうか。

winsock通信でデータをクライアント側からサーバー側に送り、一定の条件でサーバー側からクライアント側にデータを戻すソフトを作成中なのですが、サーバー側が通信エラーの為か止まってしまいます。

サーバー側(winsock部分)記述

Private Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

Winsock1(Index).Close '接...続きを読む

Aベストアンサー

現象が発生するのはまれでしょうか?

試してみましたがクライアントから連続してconnectすると発生しやすいようです。
ただ、このエラーが発生しても、特に異常が見られないので、このエラーを無視してはどうでしょうか?

Private Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

If Index = 0 Then ' 受け付けるポートと接続するポートは処理が違う
If Number <> 10035 Then ' エラーコード10035は、無視
Winsock1(Index).Close '接続を閉じる
Do While Not (Winsock1(Index).State = sckClosed)
DoEvents
Loop
On Error Resume Next
Winsock1(Index).Listen
End If
Else
Winsock1(Index).Close '接続を閉じる
Do While Not (Winsock1(Index).State = sckClosed)
DoEvents
Loop
Unload Winsock1(Index)
closedSocks.Add Index
End If

End Sub

現象が発生するのはまれでしょうか?

試してみましたがクライアントから連続してconnectすると発生しやすいようです。
ただ、このエラーが発生しても、特に異常が見られないので、このエラーを無視してはどうでしょうか?

Private Sub Winsock1_Error(Index As Integer, ByVal Number As Integer, Description As String, ByVal Scode As Long, ByVal Source As String, ByVal HelpFile As String, ByVal HelpContext As Long, CancelDisplay As Boolean)

If Index = 0 Then ' 受け付けるポートと...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報