質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.51%
XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

2250閲覧

C++ ソケット通信について

FENREL

総合スコア19

XAML

XAML(Extensible Application Markup Language)はWPF、Silverlight、Windows PhoneそしてWindows Store appsでユーザーインターフェースを定義するために使われるXML言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/07/06 07:18

###前提・実現したいこと

WindowsPhoneとPCをソケット通信で接続したいです。 WindowsPhone側(クライアント)とPC側(サーバー)という形です。 WindowsPhoneのアプリ開発ではprintfなどが使えるのか。

###発生している問題・エラーメッセージ

メイン画面にあるボタンを押すと下のコードが実行されます。 クライアント側のプログラムを開発しているのですが、接続できない状況のはずなのに接続完了の文字が出てくる。 printfが現段階では使えないのでテキストブロックに文字を表示しているがprintfは使えるのか。

###該当のソースコード

SOCKET s; //ソケット //接続するサーバの情報 struct sockaddr_in dest; //接続するサーバのIPアドレス //xxx.xxx.xxx.xxxの形式で指定する char destination[] = "xxx.xxx.xxx.xxx"; char buffer[1024]; //ソケット通信の準備 WSADATA data; WSAStartup(MAKEWORD(2, 0), &data); //接続先(サーバ)のIPアドレス情報を設定 memset(&dest, 0, sizeof(dest)); //ポート番号はサーバプログラムと共通 //ポート番号は7000番で固定にする dest.sin_port = htons(7000); dest.sin_family = AF_INET; dest.sin_addr.s_addr = inet_addr(destination); //ソケットの生成 s = socket(AF_INET, SOCK_STREAM, 0); //サーバへの接続 if (connect(s, (struct sockaddr *) &dest, sizeof(dest))){ //TxtB2に文字を表示する this->TxtB3->Text = "接続できませんでした"; // printf("%sに接続できませんでした\n", destination); // return -1; } this->TxtB3->Text = "接続しました"; //printf("%sに接続しました\n", destination); //送信する文字列はテキストボックスから持っていくようにする // Txt1->Text = buffer; エラーだけどこんな感じで代入したい // printf("サーバに送信する文字列を入力してください\n"); // scanf("%s",buffer); //サーバにデータの送信 send(s, buffer, sizeof(buffer), 0); //サーバからデータの受信 ★ recv(s, buffer, 1024, 0); printf("→%s\n\n",buffer); //Windowsでのソケット終了 closesocket(s); WSACleanup();

###試したこと

IPアドレス、ポート番号を接続できないように変更したが「接続完了」が表示される。 ブレークポイントを置いて1行ごと確認したが「★」の所で「接続完了」が出る。

###補足情報(言語/FW/ツール等のバージョンなど)
より詳細な情報

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Chironian

2016/07/06 13:38

興味深いタイトルなので、間違って何度も開いてしまいます。できれば「解決済」にしていただけませんか?
guest

回答1

0

ベストアンサー

this->TxtB3->Text = "接続しました";
で上書きされてます。

次のようにelseブロックを追加してください。

C++

1//サーバへの接続 2 if (connect(s, (struct sockaddr *) &dest, sizeof(dest))){ 3 //TxtB2に文字を表示する 4 this->TxtB3->Text = "接続できませんでした"; 5 // printf("%sに接続できませんでした\n", destination); 6 // return -1; 7 } 8 else { 9 this->TxtB3->Text = "接続しました"; 10 }

投稿2016/07/06 07:25

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

FENREL

2016/07/06 07:32

ものすごい初歩的なミスでした(-_-;) 回答していただき、ありがとうございます(#^.^#)
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.51%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問