問題タブ [asyncsocket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
objective-c - Objective C、チャット アプリケーション (ソケット) を実装する最良の方法
チャットアプリケーションを開発しようとしています。私は AsyncSocket を使用し、チュートリアルに従いました。これで、localhost を使用して telnet からテキスト メッセージを受信できるようになりました。
しかし、複数のチャットを処理する方法がわかりません。3 人の友人が私の IP アドレスとポート番号を知っているとします。彼らはソケットを介して私にメッセージを送ります。では、どのメッセージがどの友人に属しているかをどのように判断するのでしょうか?
前もって感謝します。
multithreading - 非同期ソケット サーバーはどのように機能しますか?
特定の実装の詳細について (まだ) 尋ねているわけではなく、何が起こっているのかについての一般的な概要を尋ねているだけです。ソケットの背後にある基本的な概念を理解しており、プロセス全体を明確にする必要があります。私の(おそらく非常に間違った)理解は現在これです:
ソケットは、(独自のスレッドで) 接続したいクライアントを常にリッスンしています。接続が発生すると、別のスレッドを生成して接続プロセスを実行するイベントが発生します。接続プロセス中に、クライアントにはサーバーと通信するための独自のソケットが割り当てられます。次に、サーバーはクライアントからのデータを待ち、データが到着するとイベントが発生し、ストリームからデータをバッファーに読み取るスレッドが生成されます。
私の質問は次のとおりです。
私の理解はどのように外れていますか?
各クライアント ソケットは、データをリッスンするために独自のスレッドを必要としますか?
データはどのように正しいクライアント ソケットにルーティングされますか? これは、TCP/UDP/カーネルの内臓によって処理されますか?
このスレッド化された環境では、通常、どのような種類のデータが共有されていますか?また、競合のポイントは何ですか?
明確化と追加の説明をいただければ幸いです。
編集:
どのデータが一般的に共有されているか、および競合のポイントに関する質問に関しては、これは接続の受け入れとデータの送受信の一般的なプロセスに関する質問ではなく、実装の詳細であることに気付きました。いくつかの実装 (SuperSocket と Kayak) を調べたところ、セッション キャッシュや再利用可能なバッファー プールなどの同期がいくつかあることに気付きました。この質問は無視して構いません。皆様のフィードバックに感謝いたします。
cocoa - 非同期ソケットと「サイレント」切断
私はasyncsocketを使用してWindows.netサーバーへのクライアントとしてcocoaasyncsocketを使用してきました。ProtocolBuffersを使用してメッセージをエンコードしています。一緒に、これらは素晴らしいツールのセットを作ります。
ただし、最近、クライアントをサーバーに接続したままにしておくと、データを要求しようとすると、メッセージは送信されたように見えますが、サーバーに到達しないことに気付きました。ネットワークに問題があった場合のような通常の切断を受信していないため、これを「サイレント」切断と呼んでいます。
デバッグするために次のメソッドを処理していますが、いずれも呼び出されません。
何の通知もなく、私はこれをデバッグするのが難しいと感じています。同様に、サーバーは切断を表示しません。
誰かがこれをさらに分析する方法に私を向けることができますか?
どうもありがとう。
iphone - syncsocket の writeData は iPhone で常にブロックされます
asyncsocket サンプルを出発点として使用して、iPhone での WLAN 通信について学習します。
Mac 上でサンプル サーバーを起動し、ポート 0 を開きます。Mac 上で実行されているテスト クライアントでデータを書き込むことができるため、これは機能します。
iPhoneでは、「ストリームが接続されました」がYESを返すので、なんとか接続できたと思います。
次に、syncsocket でデータを送信したいと思います: (完全なコードを含む編集バージョン)
*/ syncSocket = [[SyncSocket alloc] initWithTimeout: 10]; syncSocket.nsLog = YES; if (![syncSocket connectToHost: @"192.168.0.30" onPort: 12345]) { NSLog(@"Error connecting syncSocket:"); } NSData *data = [@"testxyz" dataUsingEncoding:NSUTF8StringEncoding];
NSLog(@"syncSocket trace 1"); [syncSocket writeData:data]; NSLog(@"syncSocket trace 2");[ウィンドウ addSubview:viewController.view]; [ウィンドウ makeKeyAndVisible]; はいを返します。}
データを送信し続けることはなく、writeData は常にブロックされます。IP 192.168.0.30 は私の Mac の IP です。上記で提案したように、ポート12345を使用しました。
しかし、受信するために Mac で何をしなければならないのかよくわかりません??
ご覧のとおり、実際に syncsocket を使用すると、ブロックされます。
asyncSocket も試してみたところ、asyncsocket クラスで次のメッセージが表示されました: writeStream Can NOT Accept Bytes
Mac を正しくセットアップしていない可能性があります。つまり、テストするために Mac で実行する必要があるアプリは何ですか? 多くの感謝!
ios - Asyncsocket iPhone 読み取りデータ
次のコードを使用して、.NET サーバーからの応答をキャッチしようとしています。
telnet テストを実行すると動作します (応答が得られます)。しかし、このコードを使用すると、応答がありません。
サーバーとの接続は確立され、サーバーに情報を送信できますが、応答がありません。
これは私がログに記録したものです。
返信が届かないのはなぜですか?
c# - 送信と受信を同期する方法は?
C# アプリケーション (非同期クライアント/サーバー) に問題があります。BeginReceive を実行し、BeginSend を実行すると、問題なくデータが処理されます。しかし、BeginSend を実行してから BeginReceive を実行すると、何も起こらず、BeginSend()/BeginReceive() がフリーズします。
どうすればこの問題を解決できますか? タイムアウトは役に立ちません。
ありがとう。
c# - C# 非同期オブジェクト転送 (ソケット?)
非同期オブジェクト送信にアプローチする最良の方法を見つけようとしています。
私がやりたいことは、1 つのサーバーに接続するネットワーク接続 (5 ~ 10 クライアント) で同じアプリケーションの複数のインスタンスを開き、アプリケーションの 1 つがそのデータを更新するときに、その更新を他のすべてのアプリケーションに送信する必要があることです。インスタンス。
更新オブジェクトは次のようになります。
データはそれほど大きくはありませんが、このタイプのオブジェクトは、各クライアントから他のすべてのクライアントに毎秒約 10 ~ 50 回送信されます。
この種のデータ転送を処理する最善の方法は何ですか?
私が考えていたのは、サーバーオブジェクトに次のようなものを使用して接続をリッスンさせ、受け入れることです:
しかし、サーバーはデータ転送をどのように処理する必要があるのでしょうか?
のすべてのソケットからデータを受信しようとする必要があることはわかっています。データ_clients
を受信したら、データを の他のすべてのソケットに転送する必要があります_clinets
が、どうすればよいですか? クライアントが接続を終了したことをどこでどのように検出すればよいですか?
また、クライアントは、サーバーにデータを送信するだけでなく、サーバーから受信するデータをリッスンする必要があります。そのすべてを 1 つのソケットで処理できますか、それとも 2 つ使用する必要がありますか?
助けてくれてありがとう!
iphone - iPhone SDK は udp ブロードキャストを制限しますか?
ホストアドレスが「255.255.255.255」または「192.168.1.255」の場合、
2011-03-30 19:40:34.547 voco[38177:207] AsyncUdpSocket 0x629bf30 が予期しない CFSocketCallBackType 8 を受信しました。 UserInfo=0x62b4360 {NSLocalizedDescription=許可が拒否されました} 2011-03-30 19:40:34.550 voco[38177:207] 送信されません
ホストアドレスが「255.255.255.0」または「192.168.0.255」の場合
2011-03-30 19:35:48.415 voco[37930:207] AsyncUdpSocket 0x565fea0 が予期しない CFSocketCallBackType 8 を受信しました。 2011-03-30 19:35:48.417 voco[37930:207] 送信
したがって、私のコードが原因ではないと思います。どうすれば修正できますか?
java - NIOおよびNIO.2(JSR203)を使用したJavaノンブロッキングおよび非同期IO-Reactor/Proactorの実装
だからここで私は私のお気に入りのソフトウェアパターンブックの1つ(パターン指向のソフトウェアアーキテクチャ-同時およびネットワークオブジェクトのパターン)、特にProactor/Reactor非同期IOパターンのセクションを読んでいます。選択可能なチャネルを使用することで、Reactorスタイルの非同期IOメカニズムを非常に簡単に実装できることがわかります(そしてそうしました)。しかし、ノンブロッキング書き込みで適切なProactorメカニズムを実装する方法がわかりません。これは、OSが管理するノンブロッキング書き込み機能を利用しています。
win32でのGetQueuedCompletionStatusなどのOS固有の呼び出しでサポートされる機能。
私は、Java 7が非同期完了ハンドラー(正しい方向にあるように見える)を使用してNIOにいくつかの更新をもたらすことを確認しました。そうは言っても...OS管理の非同期操作(特に非同期書き込み)の統合されたクロスプラットフォームサポートがないことを考えると、これはネイティブOSサポートを利用していない準実装であると思います。
だから私の質問は、特定のシナリオに使用するのが有利であるような方法で、JavaでプロアクターベースのIO処理が可能かどうかです。また、Java NIOがプロアクターベースのIO処理(Java6またはJava7のいずれか)をサポートしている場合、OS管理の非同期IOサポート(つまり、OSからの完了コールバック)が利用されていますか?さらに、実装が純粋にVM内にある場合、パフォーマンス上の利点はほとんどないため、プロアクティブなイベント処理を使用しても、同時ネットワーク処理ソフトウェアを構築するための異なる(おそらくより単純な)方法にすぎません。
ここでのプロアクティブなイベント処理に関心のある人には、長所/短所の概要と、従来の接続ごとのスレッドモデルとリアクティブIOモデルの両方との比較について説明した優れた記事があります。
objective-c - asyncsocket "connectToHost" は常に成功し、失敗を返すことはありません
asyncsocket を使用して、Objective C とのソケット接続を作成しています。「connectToHost」メソッドを使用してこれを行います。ソケット接続が失敗した場合を処理しようとしています。「connectToHost」は、接続に成功すると「YES」を返し、それ以外の場合は「NO」を返すはずです。何らかの理由で、常に yes が返されます。ホストとして空白の文字列を指定しても、それでも yes が返されます。何かご意見は?
ありがとう、
ロビン