|
3D-программирование Вопросы, касающиеся программирования 3D мира |
11.12.2013, 21:30
|
#1
|
AnyKey`щик
Регистрация: 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
|
|
Ответ: IP адрес по умолчанию 127.0.0.1
127-0-0-1 это ip твоего компа, естесно при создании нового сервака он ссылается на самого себя
|
|
|
11.12.2013, 22:22
|
#3
|
AnyKey`щик
Регистрация: 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
|
Знающий
Регистрация: 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
|
AnyKey`щик
Регистрация: 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
|
.
Регистрация: 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
|
AnyKey`щик
Регистрация: 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
|
Знающий
Регистрация: 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
|
Мастер
Регистрация: 12.01.2009
Сообщений: 980
Написано 389 полезных сообщений (для 632 пользователей)
|
Ответ: IP адрес по умолчанию 127.0.0.1
2ip.ru можно узнать свой public ip.
|
(Offline)
|
|
11.12.2013, 23:33
|
#10
|
AnyKey`щик
Регистрация: 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
|
AnyKey`щик
Регистрация: 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
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: IP адрес по умолчанию 127.0.0.1
Должны быть какие-то средства, чтобы слушать входящие соединения на какой-то порт сразу на всех сетевых интерфейсах, тебе наверняка это нужно. Ищи что-то такое. Тогда сможешь принимать соединения хоть в локалке, хоть с интернета (если на роутере нужные порты проброшены).
|
(Offline)
|
|
12.12.2013, 16:24
|
#13
|
AnyKey`щик
Регистрация: 11.12.2013
Сообщений: 18
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: IP адрес по умолчанию 127.0.0.1
А как тогда создавать игру в directplay на public ip? У меня когда я создаю игру на directplay ip всегда loopback
|
(Offline)
|
|
12.12.2013, 17:01
|
#14
|
Разработчик
Регистрация: 27.06.2009
Адрес: Рязань-Москва
Сообщений: 471
Написано 401 полезных сообщений (для 1,072 пользователей)
|
Ответ: IP адрес по умолчанию 127.0.0.1
Так ты откуда подключаешься? с того же компа где и сервер? конечно он будет 127.0.0.1
Узнай (укради, купи у провайдера) внешний (выделенный, белый) IP для своего интернет-подключения и на него подключайся с другого компа.
|
(Offline)
|
|
12.12.2013, 17:25
|
#15
|
AnyKey`щик
Регистрация: 11.12.2013
Сообщений: 18
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: IP адрес по умолчанию 127.0.0.1
так у меня не получится подключаться на внешний ip с того же компа где и сервер?
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 05:47.
|