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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

Q&A

1回答

4268閲覧

Unityが急にサーバーにつながらなくなった

zenobread

総合スコア44

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Unity

Unityは、Unity Technologiesが開発・販売している、IDEを内蔵するゲームエンジンです。主にC#を用いたプログラミングでコンテンツの開発が可能です。

0グッド

0クリップ

投稿2018/12/08 02:17

今までxamppでサーバーを立ててUnityからデータを送ったりphpでその送られたデータを読み取って何らかの値を返す
ということをしていたのですが、パソコンを再起動したところうまくつながらなくなりました。
以下はその具体的なコードと処理内容です。

1Unityから”id”という名前で0~2の数字を送る

2localhostにあるAPItest_miss.phpというphpでそれを読み取り
jsonファイルから読み取ったデータの中から
idにあったものを返す

3unity側で受け取った値をresulttextに表示させる

APItest.php

1<?php 2$url = "http://localhost/php/APItest.json"; 3$json = file_get_contents($url); 4//$json = mb_convert_encoding($json,'UTF8','ASCII,JIS,UTF=8,EUC-JP,SJIS-WIN'); 5$arr = json_decode($json,true); 6$e=$_post["id"]; 7echo json_last_error(); 8echo json_last_error_msg(); 9 10if($arr==NULL){ 11 echo "MISS!"; 12 return; 13}else{ 14 $json_count=count($arr["res"]["odpt:stationTimetableObject"]); 15 $dest_count=count($arr["res"]["odpt:stationTimetableObject"][0]["odpt:destinationStation"]); 16 $train=array(); 17 $traintype=array(); 18 $number=array(); 19 $time=array(); 20 $station=array(); 21 for($i=$json_count-1;$i>=0;$i--){ 22 $train[]=$arr["res"]["odpt:stationTimetableObject"][$i]["odpt:train"]; 23 $traintype[]=$arr["res"]["odpt:stationTimetableObject"][$i]["odpt:trainType"]; 24 $number[]=$arr["res"]["odpt:stationTimetableObject"][$i]["odpt:trainNumber"]; 25 $time[]=$arr["res"]["odpt:stationTimetableObject"][$i]["odpt:departureTime"]; 26 $dest[]=$arr["res"]["odpt:stationTimetableObject"][$i]["odpt:destinationStation"][$i]["odpt.Station"]; 27 $dest[]=$arr["res"]["odpt:stationTimetableObject"][$i]["odpt:destinationStation"][$i+1]["odpt.Station"]; 28 } 29} 30echo $dest[$e]; 31?> 32

APItest.json

1{"res": 2 { 3 "odpt:stationTimetableObject":[ 4 { 5 "odpt:train":"odpt.Train:JR-East.Yamanote.350G", 6 "odpt:trainType":"odpt.TrainType:JR-East.Local", 7 "odpt:trainNumber":"350G", 8 "odpt:departureTime":"04:34", 9 "odpt:destinationStation":[ 10 { 11 "odpt.Station":"1" 12 }, 13 { 14 "odpt.Station":"2" 15 }, 16 { 17 "odpt.Station":"3" 18 } 19 ] 20 } 21 ] 22 23 } 24} 25

Catch2.cs

1using System.Collections; 2using System.Collections.Generic; 3using UnityEngine; 4using UnityEngine.UI; 5public class Catch2 : MonoBehaviour 6{ 7 public Text ResultText_; 8 public Text InputText_; 9 public string ServerAddress = "http://192.168.33.10/php/APItest_miss.php"; 10 // Use this for initialization 11 public void SendSignal_Button_Push() 12 { 13 Debug.Log("SUCCESS1"); 14 StartCoroutine("Access"); 15 } 16 17 private IEnumerator Access() 18 { 19 Debug.Log("SUCCESS2"); 20 Dictionary<string, string> dic = new Dictionary<string, string>(); 21 dic.Add("id", InputText_.GetComponent<Text>().text); 22 StartCoroutine(Post(ServerAddress, dic)); 23 yield return 0; 24 } 25 26 private IEnumerator Post(string url, Dictionary<string, string> post) 27 { 28 Debug.Log("SUCCESS3"); 29 WWWForm form = new WWWForm(); 30 foreach (KeyValuePair<string, string> post_arg in post) 31 { 32 form.AddField(post_arg.Key, post_arg.Value); 33 } 34 WWW www = new WWW(url, form); 35 36 yield return StartCoroutine(CheckTimeOut(www, 180f)); 37 38 if (www.error != null) 39 { 40 Debug.Log("HttpPost NG:" + www.error); 41 } 42 else if (www.isDone) 43 { 44 Debug.Log("こんにちは"); 45 ResultText_.GetComponent<Text>().text = www.text; 46 } 47 } 48 49 private IEnumerator CheckTimeOut(WWW www, float timeout) 50 { 51 Debug.Log("SUCCESS4"); 52 float resultTime = Time.time; 53 while (!www.isDone) 54 { 55 if (Time.time - resultTime < timeout) yield return null; 56 else 57 { 58 Debug.Log("TimeOut"); 59 break; 60 } 61 } 62 yield return null; 63 } 64 65 66 void Start() 67 { 68 69 } 70 71 // Update is called once per frame 72 void Update() 73 { 74 75 } 76} 77

ここでDebugLogで表示されるのはscuccess4までで、
そこからしばらくした後HttpPost NG:Cannot connect to destination host
とでてきます。
パソコンを再起動するまでは何ごともなくつなぐことが出来たので
対応が分かりません。
xamppやUnityを再起動してもダメでした。
恐らくコードの問題ではないと思うのですが、Unityやxamppの設定は
再起動した後も全く変えておらず心当たりがありません。

使用機種やバージョンは
Unity最新版
xamppv3.2.2
oS windows10
です。お願いします。

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

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

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

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

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

guest

回答1

0

何らかの原因でIPアドレスが変わったのではないかと思うので、一度IPアドレスを確認してみてください。

同じPC上で動かしているのであれば、「http://localhost/~」でも接続できるはずなので、そちらに変えたほうがいいかもしれません。

投稿2018/12/08 03:39

fiveHundred

総合スコア9797

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

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

zenobread

2018/12/08 05:14

回答ありがとうございます。 調べてみた結果IPアドレスに変更はなく、localhostに変更して実行してもほぼ変わりはありませんでした。 少しだけ違いを挙げれば、lhttp://ocalhost/~ に変更した結果、HTTPpost~の文章が出てくるのがかなり早くなりました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問