プロが教えるわが家の防犯対策術!

現在LANで接続されたプリンタに文字列を印字させるプログラムを作成しているのですが、プリンタ側のIPアドレス、使用するポート(今回は1024という指定があったのでそれに設定)を設定し、印字処理をはしらせたのですが、そこでエラーが発生してしまいます。簡略化していますが、プログラムは

Private sckWinsock As Winsock

Set sckWinsock = Winsock1

sckWinsock.Protocol = sckTCPProtocol
sckWinsock.RemoteHost = "192.168.0.***"
sckWinsock.RemotePort = 1024
sckWinsock.LocalPort = 0

sckWinsock.Connect
strData = "テスト印字"
sckWinsock.SendData strData

sckWinsock.Close

エラーは

sckWinsock.SendData strData

ここで発生し、『指定したトランザクションまたは要求のプロトコルまたは接続状態に問題があります。』とでます。
PINGはちゃんと通りますし、プリンタ設定にあるテスト印字は問題なく機能するので、プリンタとの接続がまずいとは思えないのですが・・・
WinSockを使うのは初めてなので勝手がわからなく苦戦中です
どなたかわかる方、お返事お待ちしています

A 回答 (3件)

APIを使用するとできます。


ただ、使い慣れるまでちょっと大変かも・・

ちょっと検索したら、以下のところにサンプルが
ありました。

winsock api なんかで検索してみてください。
ほとんどがC言語用にかかれているものばかりですけど。
がんばってください。

参考URL:http://www.int21.co.jp/pcdn/vb/noriolib/vbmag/98 …
    • good
    • 0
この回答へのお礼

参考URL先のサンプルを参考にしたらうまくいけました

momoturboさん、最後までありがとうございました

お礼日時:2003/12/03 12:23

>Connectが開始されても一向にイベントが発生せず、原因もわからなかったので省いていました。



TCPの場合Connectのイベントが発生しないということは、
’つながっていない’ってことです。
TCPの場合、電話のような通信をイメージしてください。

電話をかける->Connectメソット
相手が電話に出る->Connectイベント
話す->SendData

この例でいうと相手が受話器を取っていないのに
しゃべり始めてるってことです。

UDPの場合は無線みたいな物で、相手が聞いてようがいまいが
関係なくしゃべるということになります。

通信の仕様がTCP・UDPによりプログラムも変わります。

MSDN(ヘルプ)のWinsockコントロールのところを
みてください。
簡単な、サンプルものってますよ。

VB6で説明しています

この回答への補足

momoturboさん、再度ご返答ありがとうございます
電話を例えての説明すごくわかりやすかったです

理解できたのは良いのですが、色々と調べているとWinSockコントロールが使用できないことがわかりました。(VBは6.0です)
ですので、コントロールを使わずにソケット通信ができれば良いとは思っているのですが、何かご存知ないでしょうか?当初の質問とは違いますが、よろしくお願いします

補足日時:2003/12/02 16:46
    • good
    • 0

思いつくことを書きます。


・sckWinsock.ConnectのあとすぐにSendDataを書いても
だめだと思います。Winsock1_Connectのイベントのあとに
行ってみてください。できればコマンドボタンのクリック
など・・
・印刷のプロトコルはTCPですか?
UDPではないのですか?

VB6の場合

この回答への補足

momoturboさん、返答ありがとうございます。
まずWinsock1.Connectのイベント後にSendDataを書いたほうがよろしいとのことですが、前に試していたときはConnectが開始されても一向にイベントが発生せず、原因もわからなかったので省いていました。
記述していたときは以下のとおりにしていました
(While文でループを繰り返すだけでした)

blnConnect = False
Winsock1.Connect
While blnConnect = False Then
DoEvent
Wend

Praivate Sub Winsock_Connect()
blnConnect = True
End Sub

それとプロトコルですが、UDPのほうが印刷には適していますか。どちらがよいのかわからず適当にTCPのほうにしていたもので・・・
UDPで挑戦してみます。
できればさらなるアドバイスお願いします
(情報が少なすぎなら追記いたします)

補足日時:2003/12/02 09:23
    • good
    • 0

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