問題タブ [cfsocket]
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 - 複数の接続を許可するように CFSocket を使用した単純なサーバー実装を修正する方法
2010 年冬から iTunes U でスタンフォード大学 CS193p コース (iOS プログラミング) のレクチャー #17 の bonjour/NSStream サンプル コードを学習しています。サンプル コードはこちらから入手できます。
簡単に言うと、サンプル コードはソケットを作成し、ポート 0 にバインドして空きポートを割り当てます。NSNetService
次に、 (bonjour)を使用してそのポートでサービスを公開します。NSNetServiceBrowser
アプリ起動時にanも起動します。利用可能なサービスは に配置されますUITableView
。セルを選択すると、対応するサービスが解決され、NSOutputStream
が作成され、データを送信できます。
接続が既に存在する場合、接続は拒否されるため、これは単純な実装です。私の質問は、複数の接続を処理する適切な方法は何ですか? 複数のクライアントがサーバーに接続されると、サーバーはそれらをどのように区別しますか? つまり、特定のクライアントだけにデータを送信し、他のクライアントには送信しないようにするにはどうすればよいでしょうか。
macos - OSX-起動デーモンと起動エージェント間の通信
私はOSXを初めて使用し、起動デーモンと起動エージェントの2つの部分からなるアプリケーションを作成する必要があります。デーモンは、コマンドの実行やロギングなどを実行し、これらの結果を起動エージェントに何らかの方法で伝達する必要があります(これは、GUIを表示するログイン項目に転送されますが、これは将来のステップです)。
私の質問:どうすればこのコミュニケーションを実現できますか?Appleのドキュメントを読んだ後、これまでに収集できたのは、CFSocketを使用するのが最善の策だということです。別の(より簡単な)方法はありますか?CFSocketsの使用方法を示すサンプルチュートリアル/例/コードはありますか(見つかりませんでした)?
PS:私の質問はこれと重複しているかもしれませんが、その質問はまだ回答されていないので、これを投稿することを考えました。
ios - MonoTouchおよびCFStreamAPIに関する問題
私は現在、ソケット接続を介してMQTTサーバーと通信する必要があるアプリケーションを開発しています。System.Net.Sockets APIは、WiFiネットワークから3Gネットワークに切り替えるときに誤動作する傾向があるため(これは実際には非常に多く発生します)、CFStreamAPIを試してみることにしました。そうすることで、私は次のようないくつかの問題に遭遇しました。
ストリームのペアを作成すると、CreatePairWithSocketToHost
いずれかのストリームでOpen()を呼び出すとすぐに、アプリケーションがクラッシュします。
電話をかけるかどうかに関係なく、クラッシュが発生しますEnableEvents()
。例外は次のとおりです。
CreatePairWithSocket
最初にを作成して接続するCFSocket
ことでストリームのペアを作成するとOpen()
、クラッシュすることなく続行できますが、CanAcceptBytesEvent
起動されることはなく、CanAcceptBytes()
常にfalseであり、書き込みの試行はタイムアウトで失敗します。
を使用してストリームのペアを作成することCreatePairWithPeerSocketSignature
は、私が操作できるストリームのペアを実際に生成する唯一のものです。開くことはクラッシュせず、それぞれへの書き込みと読み取りが許可されます。
APIは、シミュレーターと実際のデバイスの両方でこのように動作します。それで、これは私が間違っていることですか?それはMonoTouchの問題ですか?CFStream API自体のバグですか?
MonoTouchバージョン:6.0.1。XCodeバージョン:4.5。
macos - CFSocket データ コールバック
CFSocket API がソケットからデータ コールバックにバイトを読み取る方法を知っている人はいますか? 最初は、送信されたのと同じ長さでデータを常に返すために「内部」の作業を行うと思っていましたが、いくつかのテストの後、大量のデータをすばやく送信するとデータがチャンクで返されることがわかったので、ヘッダーを使用して自分でパケットを解析します。
これまでのテストでは、部分的なデータを受信していません (つまり、1000 バイトを送信した場合、データ コールバックで常に 1000 を取得しますが、それ以下になることはありません) が、バッファが本当にいっぱいになると、これが発生する可能性があり、パケットを再構築する必要があると思います。それらが不完全だった場合。
基本的に、BSDソケットで使用するのと同じパケット読み取り戦略をCFSocketで使用する必要がありますか?つまり、各パケットに長さを含むヘッダーをプレフィックスし、ストリームをパケット長まで解析し、コールバック時にパケットが不完全だった場合はデータを再結合します再び呼び出されます。
ありがとう!
iphone - IOS 受信データタイムアウト CFsocket
pool.ntp.org に接続して時刻を同期したい。だからソケットを作成しています
次に、ループを設定しています
アドレスに接続する
コールバック kCFSocketWriteCallBack がある場合、必要なデータを送信します
ここまでのすべてが完璧に機能します。私の実際の問題は
9/10回は問題なく動作しています。サーバーが応答を送信し、プロセスが続行されます。問題は、データが実際にアプリのロジックを継続するのを待っていることです。データが来ない場合kCFSocketDataCallBack
はトリガーされず、アプリは永遠に待機します。データの受信を待機するときにタイムアウトを設定する方法はありますか?(自分でNSTimer
プールに再接続する必要はありません)
objective-c - SSL と NSStream
CFSocket接続を介してNSStreamでSSLを使用しようとしました。だから私はこのコードを書きます:
しかし、curl またはブラウザからサーバーにリクエストを送信すると、次のエラーが発生します。
使用済みソケットでこのソリューションNSStream SSL を使用すると、まだ同じエラーが発生します。
SSL を使用するようにストリームを構成するには?
objective-c - cfsocketsenddata でバイナリ データを送信する
Wake on Lan の UDP パッケージを送信しようとしています。パッケージの最初の部分は、16 進コードの 6*FF の後に、16 進コードの 16 * MAC アドレスが続く必要があります。NSString を 16 進数値で送信するにはどうすればよいですか? 現在は、値 255 を FF ではなく 32 35 35 として送信しています。
次のコードがあります。
Todo: IP アドレスに送信する代わりにブロードキャストを実装します。
Wireshark は、MAC アドレス aa:bb:cc:dd:ee:ff で試行すると、次のパッケージ データが送信されることを示しています。
必要なものは次のとおりです。
Objective Cで16進値を操作する方法が本当にわかりません。
ios - iOS7のUDPソケットで文字列を送信するには?
iOS7 アプリで UDP 経由で単純な文字列を既知の IP に送信しようとしていますが、その方法に関する簡単な説明とサンプル コードが見つかりませんでした。TCP についてはたくさんありますが、UDP についてはそれほど多くはなく、私の場合は UDP でなければなりません。