HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2022
1111
やまとらだむ実行ファイルにすると sockopen が失敗してしまう6解決


やまとらだむ

リンク

2022/11/11(Fri) 14:48:28|NO.97321

はじめまして、素人質問で恐縮ですが教えて頂きたいです。

hspsockを使い自身のメールサーバーからメールの内容を取得しその中に特定の情報が含まれているか調べるという動作を作成していました。
HSP上の【コンパイル+実行】ではメールの内容取得など一連の動作が全て正常に動作するのですが、いざ実行ファイルにして実行すると sockopen でエラーになってしまうようです。
エラーの内容としては ソケットの初期化に失敗 している様です。

エラーを起こしている行→ sockopen 0,【サーバーURL】,110

もちろんhspsock.dllなどの拡張ファイルは同梱しています、内部エラーが発生しているわけでもないのでHSP上の問題ではなく何か別の外的要因があるのかと思い色々調べていましたが結局原因を見つける事が出来ませんでした。
HSPはバージョン3.51 動作環境は Windows 10 Enterprise (リモートデスクトップ接続) です。


皆様の知恵をお貸りしたいです、何卒よろしくお願い申し上げます。



この記事に返信する


猪野

リンク

2022/11/13(Sun) 13:45:27|NO.97328

私も詳しくはないので間違っていたら申し訳ないのですが、
以下のモジュールをincludeしてみてください。

>mod_showWsLastError.as

#ifndef showWsLastError #include "kernel32.as" #module #ifndef WSAGetLastError #uselib "ws2_32.dll" #func WSAGetLastError "WSAGetLastError" #endif #ifndef FORMAT_MESSAGE_ALLOCATE_BUFFER #const FORMAT_MESSAGE_ALLOCATE_BUFFER $100 #endif #ifndef FORMAT_MESSAGE_FROM_SYSTEM #const FORMAT_MESSAGE_FROM_SYSTEM $1000 #endif #ifndef FORMAT_MESSAGE_IGNORE_INSERTS #const FORMAT_MESSAGE_IGNORE_INSERTS $200 #endif #ifndef MAKELANGID #define ctype MAKELANGID(%1,%2) (%2<<10|%1) #endif #ifndef LANG_NEUTRAL #const LANG_NEUTRAL $0 #endif #ifndef SUBLANG_DEFAULT #const SUBLANG_DEFAULT $1 #endif #deffunc showWsLastError local _errCode,local _lpBuffer,local _errMsg _errCode=WSAGetLastError() FormatMessage FORMAT_MESSAGE_ALLOCATE_BUFFER|FORMAT_MESSAGE_FROM_SYSTEM|FORMAT_MESSAGE_IGNORE_INSERTS,0,_errCode,MAKELANGID(LANG_NEUTRAL,SUBLANG_DEFAULT),varptr(_lpBuffer),0,0 dupptr _errMsg,_lpBuffer,stat+1,2 dialog strf("%sCode: %d",_errMsg,_errCode),1,"Error" LocalFree _lpBuffer return #global #endif
その上で、エラーが発生した箇所でshowWsLastError命令を呼び出せば、
エラーの具体的な原因が表示されるかと思います。

#include "hspsock.as" #include "mod_showWsLastError.as" sockopen 0,"サーバーURL",110 if stat { showWsLastError end }
より詳細な説明はこちらで確認できるので、解決の参考にしてください。
https://learn.microsoft.com/en-us/windows/win32/winsock/windows-sockets-error-codes-2



やまとらだむ

リンク

2022/11/14(Mon) 09:00:35|NO.97336

猪野 様 

こんにちは!
ご教授頂きありがとうございます。

ご提示して頂いた"mod_showWsLastError.as"を用いてエラーコードを割り出すことができました!
Code:10022 "引数が無効です" ということでどうやらsock関連の引数に問題があるようでした。

HSP上のコンパイルでは上手く動作してくれるので、その辺の動作の違いをWinsockリファレンスを読みつつもう少し勉強してみたいと思います。
蛇足ですが、この問題にはかれこれ数か月前から引っ掛かっていて頭を悩ませていました。
猪野 様のおかげで1歩前進するきっかけにする事が出来そうです。

本当にありがとうございます!

一旦ここで解決としますが、今後もこまめにこちら確認させて頂きます。
皆様なにか思い当たる点があればご教授頂きたく思います、よろしくお願いいたします。



TOMATO

リンク

2022/11/14(Mon) 12:32:18|NO.97337

(Windows 7時代の情報なので、10や11でも同様なのかは未検証)

ファイルサーバー上(Windowsファイル共有)に配置したEXEファイルを実行した場合、
ソケットの作成に失敗する可能性があるとか。
https://social.msdn.microsoft.com/Forums/windowsdesktop/en-US/3076a9cd-57a0-418d-8de1-07adc3b486bb/socket-fails-with-error-10022-when-application-is-run-from-certain-network-shares-on-vista-and?forum=wsk

対処方法は、ローカル上で実行するか、下記レジストリを操作すると良いらしい。
https://hik-s.co.jp/windows2012server-%E5%85%B1%E6%9C%89%E3%83%95%E3%82%A9%E3%83%AB%E3%83%80%E4%B8%8A%E3%81%AE%E3%82%A2%E3%83%97%E3%83%AA%E3%81%8C%E5%8B%95%E4%BD%9C%E3%81%97%E3%81%AA%E3%81%84/



zakki

リンク

2022/11/14(Mon) 13:09:09|NO.97338

コンパイル+実行ではhsp3.exeがファイアウォール通ればいいけど、実行ファイルを作るとそのexeがファイアウォール通る必要があるっていう違いの可能性はないでしょうか?
一旦、セキュリティソフトを停止して試して、問題なければ自作exeのネットワークアクセスを許可するように設定でどうでしょう。



やまとらだむ

リンク

2022/11/14(Mon) 16:19:09|NO.97339

TOMATO 様

こんにちは! ご教授頂きありがとうございます。
なんと驚く事に ディレクトリをローカルで実行したら無事に正常動作致しました!!
正しくおっしゃる通りでHSPはローカルにインストールしていた為に正常動作していて、一方でプロジェクトファイルは会社で割り当てられたネットワークドライブに保存して実行ファイルもそちらに入れていました。
まさかディレクトリが影響するとは全くもって想定しておりませんでした TT
本当にありがとうございます、とても良い経験・勉強になりました!


zakki 様

こんにちは! ご教授頂きありがとうございます。
セキュリティの線も疑ってはいたのですが会社のネットワークセキュリティが結構複雑なものでして、多少の実行権限等は弄れるのですが会社側でPCの設定操作をかなり制限されている状況です。
なので、原因を調べていく中でもしセキュリティ起因だったら諦めようと考えていました。。。
ただ理屈としては全くもって仰る通りで、会社に寄与する取り組みとしてやっている事ですので もしセキュリティが起因する不具合に直面したらそこは会社と相談して行こうと思います。
ご助言頂きましてありがとうございました、セキュリティはあまり詳しくないのですがアドバイスで後押し頂けたので以前より自信を持って会社へ掛け合えそうです。



やまとらだむ

リンク

2022/11/14(Mon) 16:25:03|NO.97340

皆様のご助言を頂きまして無事に正常動作まで持って行く事が出来ました!
本当にありがとうございました、大変に良い勉強・経験とする事が出来ました。

結論としてはディレクトリがローカルかNWドライブかといった所で、どちらかというとPC取り扱いの初歩的な原因だったかもしれません。

これにて正式に解決と至りましたが、今後の参考の為・もしくは同じ問題に悩んでいる方の参考の為にこちらのスレッドは残しておきたいと考えています。



ONION software Copyright 1997-2023(c) All rights reserved.