Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > Blitz3D > 3D-программирование

3D-программирование Вопросы, касающиеся программирования 3D мира

Ответ
 
Опции темы
Старый 11.12.2013, 21:30   #1
ghosttt
AnyKey`щик
 
Аватар для ghosttt
 
Регистрация: 11.12.2013
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Плохо IP адрес по умолчанию 127.0.0.1

Всем привет)Возникла проблема с сетью через протокол TCP Почему то всегда когда создаю сервер, то его ip = 127.0.0.1 . Хотя нигде в коде не указывается ip, оно по идее должно само определяться просто я писал сервер по одному уроку, а именно http://fgs.at.ua/publ....-1-0-15 там есть полный код сервера. У меня почти такой же код сервера, только переделан немного под directplay. Просто получается что по умолчанию ip сервера 127.0.0.1 ? Может как то можно задать ip вручную? у меня даже команда 

Print "User connected To ServCom. IP = "+DottedIP(TCPStreamIP(u\StreamCom))

выдает ip 127.0.0.1
очень жду вашей помощи, парни...
(Offline)
 
Ответить с цитированием
Старый 11.12.2013, 22:11   #2
Черный крыс
 
Сообщений: n/a
Ответ: IP адрес по умолчанию 127.0.0.1

127-0-0-1 это ip твоего компа, естесно при создании нового сервака он ссылается на самого себя
 
Ответить с цитированием
Старый 11.12.2013, 22:22   #3
ghosttt
AnyKey`щик
 
Аватар для ghosttt
 
Регистрация: 11.12.2013
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

А как поменять ip? Просто я когда даже в окошке directplay создаю игру на сервере (там ведь ip указывать не нужно), то ip всегда 127.0.0.1. Мне нужно как-то при создании сервера в начале нужно вводить ip, но вот как именно я не знаю( Если что вот урок по которому я делал сервер, там в конце есть полный код http://fgs.at.ua/publ/blitz3d/networ...ast_2/5-1-0-15
(Offline)
 
Ответить с цитированием
Старый 11.12.2013, 22:36   #4
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

Чтобы получить ip своего компьютера используй CountHostIPs("") и HostIP( host_index ).
пример кода:

; Сначала вызываем CountHostIPs (количество адресов локального компьютера)
n = CountHostIPs("")
; n теперь содержит количество адресов локального компьютера.

; Получаем первый адрес
ip = HostIP(1)

; Преобразуем его в привычный вид IP-адреса
ipaddress$ = DottedIP$(ip)

Print "Dotted IP Тест"
Print "=============="
Print ""
Print "Внутренний адрес IP ID:" + ip
Print "Привычный IP адрес:" + ipaddress$
Print ""
Print "Нажмите любую клавишу чтобы продолжить"

WaitKey()

End
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
(Offline)
 
Ответить с цитированием
Старый 11.12.2013, 22:50   #5
ghosttt
AnyKey`щик
 
Аватар для ghosttt
 
Регистрация: 11.12.2013
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

Может я вопрос не правильно задал: как мне правильно определить ip моего компьютера для directplay и tcp сервера? Код моего сервера без direct play на http://fgs.at.ua/publ/blitz3d/networ...ast_2/5-1-0-15
жду помощи) просто если я не смогу это сделать, то проект заброшу, чего не хотелось бы делать
(Offline)
 
Ответить с цитированием
Старый 11.12.2013, 23:08   #6
moka
.
 
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений
(для 6,863 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

Тебе нужен внешний IP (Public IP), определить самому его не получиться, т.к. нужна удалённая точка. Есть много разных API для этого, и можно написать простенькое приложение, на том же PHP, делаешь на него запрос, он проверяет твой Public IP и выдаёт тебе его.
(Offline)
 
Ответить с цитированием
Старый 11.12.2013, 23:20   #7
ghosttt
AnyKey`щик
 
Аватар для ghosttt
 
Регистрация: 11.12.2013
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

кто разбирается в directplay, скажите, как при создании сервера на directplay правильно определить ip сервера? Я когда создаю сервер в окошке startnetgame, ip не указываю, ведь его при создании сервера указывать не нужно, и оно становится автоматически 127.0.0.1.
(Offline)
 
Ответить с цитированием
Старый 11.12.2013, 23:22   #8
RBK
Знающий
 
Аватар для RBK
 
Регистрация: 06.12.2010
Адрес: Луганск
Сообщений: 252
Написано 112 полезных сообщений
(для 166 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

Для TCP ты все правильно сделал, используй TCPStreamIP.
А чтобы вместо 127.0.0.1 там был другой адрес, в коде клиента найди строку "Global ServerIP$="localhost" ; где сервер. Нужно вписать IP сервера." и замени localhost на реальный IP сервера.
__________________
AMD Sempron(tm) 1.41Ггц, 1024МБ ОЗУ, GeForce 6200 128МБ, WinXP SP3.
(Offline)
 
Ответить с цитированием
Старый 11.12.2013, 23:27   #9
Samodelkin
Мастер
 
Регистрация: 12.01.2009
Сообщений: 979
Написано 388 полезных сообщений
(для 631 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

2ip.ru можно узнать свой public ip.
(Offline)
 
Ответить с цитированием
Старый 11.12.2013, 23:33   #10
ghosttt
AnyKey`щик
 
Аватар для ghosttt
 
Регистрация: 11.12.2013
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

Это я сделал давно, но это не работает
вот мой код, может так вы поможете мне
Type ListFiles
        Field File_Name$
        Field File_Size
End Type

Type users
        Field StreamCom
End Type

Type Streams
        Field StreamDat
End Type

Graphics3D 600, 400, 32, 2
SetBuffer BackBuffer()
AppTitle "Server"

font1 = LoadFont("times new roman", 18, 1)
SetFont font1

NetGame=StartNetGame()


;n = CountHostIPs("")
;ip = HostIP(1)

;IP_addr$=DottedIP$(ip)


myDir=ReadDir("test")
Repeat
        File_Name$=NextFile$(myDir)
        If File_Name$="" Then Exit
        If FileType("test\"+File_Name$) <> 2 Then
                f.ListFiles=New ListFiles
                f\File_Name=File_Name
                f\File_Size=FileSize("test\"+File_Name)
                Print f\File_Name+" - "+f\File_Size
        End If
Forever
CloseDir myDir

ServCom=CreateTCPServer(8880)
If Not ServCom Then Print "ServCom failed to start." : WaitKey() : End
Print "ServCom started."


ServDat=CreateTCPServer(8881)
If Not ServDat Then Print "ServDat failed to start." : WaitKey() : End
Print "ServDat started."



While Not KeyHit(1)
		
 
        ServComStream=AcceptTCPStream(ServCom)


        If ServComStream Then 
                u.users = New users
                u\StreamCom=ServComStream
                Print "User connected To ServCom. IP = "+ DottedIP(TCPStreamIP(u\StreamCom))
        End If


        ServDatStream=AcceptTCPStream(ServDat)
        If ServDatStream Then 
                us.Streams = New Streams
                us\StreamDat=ServDatStream
                Print "User connected to ServDat. IP = "+ DottedIP(TCPStreamIP(us\StreamDat))
                WriteLine(us\StreamDat,Str(us\StreamDat))
        End If
        
        For u.users=Each users
                If u\StreamCom Then
                        If ReadAvail(u\StreamCom)>1 Then
                                S$=ReadLine(u\StreamCom)

                        
                        Print S
						

                        EndIf
                Else
                        Delete u
						
                EndIf
        Next

If S="Get File List" Then
        For LF.ListFiles=Each ListFiles
        		WriteLine (u\StreamCom,"#file="+LF\File_Name+"&"+Str(LF\File_Size))
        Next
EndIf


If Left(s,8)="GetFile=" Then
        temp=Instr(s,"&")

        File_Name$=Mid(s,9,temp-9)
        Cli_Stream=Int(Mid(s,temp+1))
        File_Size=FileSize("test\"+File_Name)
        
        file=OpenFile("test\"+File_Name)
        If Not file Then Print "File not open." : WaitKey() : End 
                                                                
        Print "Sending file "+File_Name+"..."
        
        bnk=CreateBank(File_Size)
        ReadBytes(bnk,file,0,File_Size)
        WriteBytes(bnk,Cli_Stream,0,File_Size)
        FreeBank bnk 
        CloseFile(file)
        Print "finish."
EndIf

        
Wend

End
мне просто нужно сменить ip на реальное, что-бы потестить мой проект с друзьями, а на локальном ip все прекрасно работает.
в клиенте подключение идет через ip которое я напишу.
и я пользуюсь 2ip.ru, но проблема в том, что я не знаю как и где внести public ip в коде
(Offline)
 
Ответить с цитированием
Старый 11.12.2013, 23:54   #11
ghosttt
AnyKey`щик
 
Аватар для ghosttt
 
Регистрация: 11.12.2013
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

не знаю почему, но эта команда по идее должна писать правильный ip при подключении, но она пишет 127.0.0.1
If ServComStream Then 
                u.users = New users
                u\StreamCom=ServComStream
                Print "User connected To ServCom. IP = "+ DottedIP(TCPStreamIP(u\StreamCom))
        End If
(Offline)
 
Ответить с цитированием
Старый 12.12.2013, 01:56   #12
Phantom
Элита
 
Аватар для Phantom
 
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений
(для 1,833 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

Должны быть какие-то средства, чтобы слушать входящие соединения на какой-то порт сразу на всех сетевых интерфейсах, тебе наверняка это нужно. Ищи что-то такое. Тогда сможешь принимать соединения хоть в локалке, хоть с интернета (если на роутере нужные порты проброшены).
(Offline)
 
Ответить с цитированием
Старый 12.12.2013, 16:24   #13
ghosttt
AnyKey`щик
 
Аватар для ghosttt
 
Регистрация: 11.12.2013
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

А как тогда создавать игру в directplay на public ip? У меня когда я создаю игру на directplay ip всегда loopback
(Offline)
 
Ответить с цитированием
Старый 12.12.2013, 17:01   #14
DStalk
Разработчик
 
Аватар для DStalk
 
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений
(для 1,072 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

Так ты откуда подключаешься? с того же компа где и сервер? конечно он будет 127.0.0.1

Узнай (укради, купи у провайдера) внешний (выделенный, белый) IP для своего интернет-подключения и на него подключайся с другого компа.
(Offline)
 
Ответить с цитированием
Старый 12.12.2013, 17:25   #15
ghosttt
AnyKey`щик
 
Аватар для ghosttt
 
Регистрация: 11.12.2013
Сообщений: 18
Написано 0 полезных сообщений
(для 0 пользователей)
Ответ: IP адрес по умолчанию 127.0.0.1

так у меня не получится подключаться на внешний ip с того же компа где и сервер?
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 16:46.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com