プログラミングソケットでのUbuntuサーバー(32ビット)およびデスクトップ(32ビット)の違いは何。私はほとんどサーバーのサイドコードを終えました。私は、サーバ/クライアントベースのプロジェクトに取り組んでいます
私はUbuntuのデスクトップ上EclipseCDTでサーバーアプリケーションを開発し、すべてがうまく動作します。
しかし私のアプリをUbuntu Serverに配備すると(サーバー10.04/10.10を試しました)、サーバーアプリケーションは正常に(接続待ち)起動できますが、同じクライアントはサーバーに接続できません。
私はクライアントから/にデータを受信し、送信するためのソケットを使用します。
ピーター
P.S:私は私のサーバー・マシン上でsudo apt-get install ubuntu-desktop
をインストールする場合は、すべてが再び正常に動作します。
==============================================ソースコードから=============================
新たな発見:
LabelStartBlocking:
int newScoketId = ::accept(socketId, 0, 0); // socketId == 3 ::accept is define in socket.h
// waiting for connection
LabelResume: // if new connection coming
// Do something with newSocketId
行動差Ubuntu DesktopとServerの間では:
サーバが起動すると、ソケットルーチン::accept
でLabelStartBlocking
でブロックされます。新しい接続が到着した場合、サーバはLabelResume
で再開し、戻り値newSocketId
を使用して新しいソケット接続を作成します。
しかし、Ubuntuのサーバーのバージョンに、サーバーの起動時に、それはまた::accept
ルーチンソケットとLabelStartBlocking
でブロックされていますが、新しい接続が到着した場合、サーバはLabelResume
で再開されませんし、新しいソケット接続ができません作成される。
あなたは私を助けてくれますか?
Peter
クライアントプログラムとサーバープログラムは、同じボックスにあるときに適切に通信しますか?クリアする必要がありますか?どのようにプログラムはネットワークアドレスを指定しますか?クライアントとサーバーが座っているネットワークはどのように見えますか?これらをあなたの質問とソースコードに入れて、合理的な回答を得るかもしれません。この問題は、Ubuntuサーバーとクライアントの違いとは関係ありません。 – antlersoft
ソケット接続コードは別のチームのものであり、ドキュメントはありません。同じボックス上でサーバーとクライアントでも通信できません。私の個人的な意見では、それはいくつかのサーバー/デスクトップ構成の違いかもしれない、同じアプリのため、それはデスクトップで動作しますが、サーバー版では動作しません。 –
こんにちはantlersoft、私はソースコードで何かを見つけました。それをチェックアウトするのを手伝ってもらえますか?私はポストに新しい発見を加えました。 –