エラー、バグ、質問 - ページ 2706

 
Sergey Dzyublik:

それが問題で、MEの「エラー」タブにはログブックがないのです。

私の不注意で...

 

コード556って何?

EAで30グラフ、コンパイル時にこのコードで回復しないものもあれば、回復するものもありました。

 
Igor Zakharov:

コード556って何?

EAで30チャート、コンパイル時にこのコードで回復しないものもあれば、正常に回復するものもあった。

dip.ex5ファイルを開く 際のエラー

スクリーンショットの一部ではなく、完全なログを表示する

 
ログを入れる場所は、追加しようとします。
 
Slava:

dip.ex5ファイルを開く 際のエラー

スクリーンショットの一部ではなく、完全なログを表示する

は添付ファイルをご覧ください。

ファイル:
20200415.zip  5 kb
 

どなたか、エコーサーバーでTLSソケットをフレンドにする方法を教えてください。例題からソースコードを取り出し、ヘッダーを追加。80番ポートではアップグレードを行いますが、443番ポートでは接続し証明書を 取得しますが、その後ヘッダーから何も読み取ることができません。デバッガで実行すると、SocketIsReadableは 245と同様の数値を返しますが、SocketTlsReadは何も返さずにタイムアウトでクラッシュしていることがわかります。どうやら、MQからの神聖な知識が必要なようです。

ファイル:
 

バグ ME (build 2380) エラー説明とパラメータ情報における関数テンプレートパラメータの署名が正しくない。

template<typename T>
class A{};

class B{
public:  
   template<typename T>
   static void test(A<T> &, A<int>* = NULL){
      int x = 1 / 0;                       //'0' - division by zero |  in template 'void B::test(B:: A<T>&,A<int>*)' specified with [T=long]
   }
};

void OnStart(){
   A<long> a;
   B::test(a);                             // Parameter info: void test([unknown] &, [unknown] *=NULL)
}
 
Stanislav Korotky:

どなたか、エコーサーバーでTLSソケットをフレンドにする方法を教えてください。例題からソースコードを取り出し、ヘッダーを追加。80番ポートではアップグレードを行いますが、443番ポートでは接続し証明書を 取得しますが、その後ヘッダーから何も読み取ることができません。 デバッガで実行すると、SocketIsReadableは245と同様の数値を返しますが、SocketTlsReadは何も返さずにタイムアウトでクラッシュしていることがわかります。どうやら、MQからの神聖な知識が必要なようです。

また、HTTPRecvを使用して、さらにプロトコルを解析するためのバイトレスポンス配列を取得することにも失敗しています。
タイムアウトで失敗するのは、ping pongが整理されていないためで、整理するためにはまずサーバからバイトレスポンスを取得する必要があり、HTTPRecv 関数自体がタイムアウトを含んで いるためです。
しかし、なぜかHTTPRecvはこのバイトレスポンスをパースしません。

 
Roman:

さらにプロトコル解析のためにHTTPRecvを使用してバイトの応答配列を取得することにも失敗しています。
タイムアウトで失敗するのは、ピンポンが整理されていないからですが、整理するためにはまずサーバからバイトレスポンスを取得する必要があり、HTTPRecv 関数自体にタイムアウトが含まれて います。
しかし、なぜかHTTPRecvはこのバイトの返事を解析しません。

ただ、接続そのものがそこにはまだpingはありません。websocketプロトコルの中で後から発生する可能性があります。この問題は、サーバーがアップグレードを認識するためのレスポンスヘッダーで発生します。TLSを使用しない場合は、正常に接続されます。しかし、TLSでも、端末へのヘッダは届いているようですが、SocketTlsReadから戻って きません。

 
Stanislav Korotky:

これは、あくまでも接続そのものです。そこにはまだpingはありません。websocketプロトコルの中で後から発生する可能性があります。この問題は、サーバーのレスポンスヘッダーがアップグレードを認識する際に発生します。TLSを使用しない場合は、正常に接続されます。しかし、TLSでも、ヘッダは端末に来るが、SocketTlsReadから戻ってこないような感じです。

そうですね、なるほどと思いました。
確かにあなたのコードでは、ポート80ではヘッダーが返され、ポート443では返されません。
あなたのコードをもう一度見てみましたが、SocketTlsHandshake 関数が見当たりませんでした。
あなたのコードではハンドシェイクが行われません。これが理由かもしれません。
この機能のヘルプには、443番ポートに接続する場合は不要と記載されていますが。
だから、全体的に変なんです。

UPD:
リクエストヘッダをどのように配置してもエラーになる

ERR_NETSOCKET_IO_ERROR 5273  Ошибка отправки/получения данных из сокета

または

HTTP/1.1 400 Bad Request

開発元がTLSへのアップグレードを禁止しているのでは?


UPD:
ヘッダーにエラーはありませんが、レスポンスヘッダもありません。
HTTPRecv 関数の中に、何が入ってくるかを確認するためのprintを入れます。

result += CharArrayToString(rsp, 0, rsp_len, CP_UTF8);
Print(result);

H
この文字は、レスポンスヘッダの最初の文字だと思わせるもので、
、なぜか残りのヘッダは印刷されないのです。

開発者の皆様、教えていただけませんか?
意図的な制限なのか、それともTLSのエラーなのか?
この問題には長い間悩んできたが、成功しなかった。