- ベストアンサー
WinSockを使ってのプリンタ接続・データ送信
- LANで接続されたプリンタに文字列を印字させるためのプログラムを作成していますが、エラーが発生してしまいます。
- プリンタ側のIPアドレスとポートを設定して印字処理を行いたいが、指定したトランザクションまたは要求のプロトコルまたは接続状態に問題があるというエラーが出ています。
- プリンタとの接続がうまく行われていない可能性があるため、WinSockを使うのは初めてで苦戦中です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
APIを使用するとできます。 ただ、使い慣れるまでちょっと大変かも・・ ちょっと検索したら、以下のところにサンプルが ありました。 winsock api なんかで検索してみてください。 ほとんどがC言語用にかかれているものばかりですけど。 がんばってください。
その他の回答 (2)
- momoturbo
- ベストアンサー率55% (49/88)
>Connectが開始されても一向にイベントが発生せず、原因もわからなかったので省いていました。 TCPの場合Connectのイベントが発生しないということは、 ’つながっていない’ってことです。 TCPの場合、電話のような通信をイメージしてください。 電話をかける->Connectメソット 相手が電話に出る->Connectイベント 話す->SendData この例でいうと相手が受話器を取っていないのに しゃべり始めてるってことです。 UDPの場合は無線みたいな物で、相手が聞いてようがいまいが 関係なくしゃべるということになります。 通信の仕様がTCP・UDPによりプログラムも変わります。 MSDN(ヘルプ)のWinsockコントロールのところを みてください。 簡単な、サンプルものってますよ。 VB6で説明しています
補足
momoturboさん、再度ご返答ありがとうございます 電話を例えての説明すごくわかりやすかったです 理解できたのは良いのですが、色々と調べているとWinSockコントロールが使用できないことがわかりました。(VBは6.0です) ですので、コントロールを使わずにソケット通信ができれば良いとは思っているのですが、何かご存知ないでしょうか?当初の質問とは違いますが、よろしくお願いします
- momoturbo
- ベストアンサー率55% (49/88)
思いつくことを書きます。 ・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で挑戦してみます。 できればさらなるアドバイスお願いします (情報が少なすぎなら追記いたします)
お礼
参考URL先のサンプルを参考にしたらうまくいけました momoturboさん、最後までありがとうございました