Network.TestConnection

Сеть в Unity3D

Network.TestConnection

Сообщение t.key 11 окт 2011, 17:09

Здрасьте.
У одного из моих друзей при вызове теста выпадает значение ConnectionTesterStatus.PublicIPNoServerStarted. Че делать? Он там застревает. :-s
Если соберутся восемь ваххабитов, получится один ваххаByte.
Казахстанским геймдеверам: _ttp://gamez.kz
Аватара пользователя
t.key
UNIт
 
Сообщения: 72
Зарегистрирован: 03 авг 2011, 17:38
Откуда: Казахстан

Re: Network.TestConnection

Сообщение t.key 14 окт 2011, 03:57

Come on, guys! Show some me love! :ymhug:
Если соберутся восемь ваххабитов, получится один ваххаByte.
Казахстанским геймдеверам: _ttp://gamez.kz
Аватара пользователя
t.key
UNIт
 
Сообщения: 72
Зарегистрирован: 03 авг 2011, 17:38
Откуда: Казахстан

Re: Network.TestConnection

Сообщение ladon 14 окт 2011, 20:04

Маловато данных для рассмотрения ситуации.
Может поделишься подробностями?
ladon
UNец
 
Сообщения: 31
Зарегистрирован: 09 авг 2011, 07:03

Re: Network.TestConnection

Сообщение t.key 14 окт 2011, 22:44

Собственно вот он тест (копи паст):
Синтаксис:
Используется javascript
var testStatus = "Testing network connection capabilities.";
var testMessage = "Test in progress";
var shouldEnableNatMessage : String = "";
var doneTesting = false;
var probingPublicIP = false;
var serverPort = 9999;
var connectionTestResult = ConnectionTesterStatus.Undetermined;

// Indicates if the useNat parameter be enabled when starting a server
var useNat = false;

function OnGUI() {
GUILayout.Label("Current Status: " + testStatus);
GUILayout.Label("Test result : " + testMessage);
GUILayout.Label(shouldEnableNatMessage);
if (!doneTesting)
TestConnection();
}

function TestConnection() {
// Start/Poll the connection test, report the results in a label and
// react to the results accordingly
connectionTestResult = Network.TestConnection();
switch (connectionTestResult) {
case ConnectionTesterStatus.Error:
testMessage = "Problem determining NAT capabilities";
doneTesting = true;
break;

case ConnectionTesterStatus.Undetermined:
testMessage = "Undetermined NAT capabilities";
doneTesting = false;
break;

case ConnectionTesterStatus.PublicIPIsConnectable:
testMessage = "Directly connectable public IP address.";
useNat = false;
doneTesting = true;
break;

// This case is a bit special as we now need to check if we can
// circumvent the blocking by using NAT punchthrough
case ConnectionTesterStatus.PublicIPPortBlocked:
testMessage = "Non-connectble public IP address (port " +
serverPort +" blocked), running a server is impossible.";
useNat = false;
// If no NAT punchthrough test has been performed on this public
// IP, force a test
if (!probingPublicIP) {
connectionTestResult = Network.TestConnectionNAT();
probingPublicIP = true;
testStatus = "Testing if blocked public IP can be circumvented";
timer = Time.time + 10;
}
// NAT punchthrough test was performed but we still get blocked
else if (Time.time > timer) {
probingPublicIP = false; // reset
useNat = true;
doneTesting = true;
}
break;
case ConnectionTesterStatus.PublicIPNoServerStarted:
testMessage = "Public IP address but server not initialized, "+
"it must be started to check server accessibility. Restart "+
"connection test when ready.";
break;

case ConnectionTesterStatus.LimitedNATPunchthroughPortRestricted:
testMessage = "Limited NAT punchthrough capabilities. Cannot "+
"connect to all types of NAT servers. Running a server "+
"is ill advised as not everyone can connect.";
useNat = true;
doneTesting = true;
break;

case ConnectionTesterStatus.LimitedNATPunchthroughSymmetric:
testMessage = "Limited NAT punchthrough capabilities. Cannot "+
"connect to all types of NAT servers. Running a server "+
"is ill advised as not everyone can connect.";
useNat = true;
doneTesting = true;
break;

case ConnectionTesterStatus.NATpunchthroughAddressRestrictedCone:
case ConnectionTesterStatus.NATpunchthroughFullCone:
testMessage = "NAT punchthrough capable. Can connect to all "+
"servers and receive connections from all clients. Enabling "+
"NAT punchthrough functionality.";
useNat = true;
doneTesting = true;
break;

default:
testMessage = "Error in test routine, got " + connectionTestResult;
}
if (doneTesting) {
if (useNat)
shouldEnableNatMessage = "When starting a server the NAT "+
"punchthrough feature should be enabled (useNat parameter)";
else
shouldEnableNatMessage = "NAT punchthrough not needed";
testStatus = "Done testing";
}
}
 


case выподает на ConnectionTesterStatus.PublicIPNoServerStarted. В этом случае он переменную doneTesting не изменяет, программа продолжает тестировать до бесконечности. Вопрос в том, нужно ли использовать NAT в этом случаи, нужно ли менять переменную doneTesting?
Если соберутся восемь ваххабитов, получится один ваххаByte.
Казахстанским геймдеверам: _ttp://gamez.kz
Аватара пользователя
t.key
UNIт
 
Сообщения: 72
Зарегистрирован: 03 авг 2011, 17:38
Откуда: Казахстан

Re: Network.TestConnection

Сообщение ladon 15 окт 2011, 10:19

"Public IP address but server not initialized, it must be started to check server accessibility. Restart connection test when ready."
т.е. тест соединяется со своей же машиной, но не запущен сервер. нат тут не причем.
судя по коду предполагается что сервер на порту 9999, сервер там точно поднят?
ladon
UNец
 
Сообщения: 31
Зарегистрирован: 09 авг 2011, 07:03

Re: Network.TestConnection

Сообщение t.key 15 окт 2011, 12:31

Да судя по коду serverPort ваще не причем.
Не запускается из 100 у одного.
Если соберутся восемь ваххабитов, получится один ваххаByte.
Казахстанским геймдеверам: _ttp://gamez.kz
Аватара пользователя
t.key
UNIт
 
Сообщения: 72
Зарегистрирован: 03 авг 2011, 17:38
Откуда: Казахстан


Вернуться в Сеть

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3