forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=12)
-   -   IP адрес по умолчанию 127.0.0.1 (http://forum.boolean.name/showthread.php?t=18777)

ghosttt 11.12.2013 21:30

IP адрес по умолчанию 127.0.0.1
 
Всем привет)Возникла проблема с сетью через протокол TCP:4to: Почему то всегда когда создаю сервер, то его ip = 127.0.0.1 . Хотя нигде в коде не указывается ip, оно по идее должно само определяться :-D просто я писал сервер по одному уроку, а именно 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
очень жду вашей помощи, парни...

Черный крыс 11.12.2013 22:11

Ответ: IP адрес по умолчанию 127.0.0.1
 
127-0-0-1 это ip твоего компа, естесно при создании нового сервака он ссылается на самого себя

ghosttt 11.12.2013 22:22

Ответ: 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

RBK 11.12.2013 22:36

Ответ: 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

ghosttt 11.12.2013 22:50

Ответ: IP адрес по умолчанию 127.0.0.1
 
Может я вопрос не правильно задал: как мне правильно определить ip моего компьютера для directplay и tcp сервера? Код моего сервера без direct play на http://fgs.at.ua/publ/blitz3d/networ...ast_2/5-1-0-15
жду помощи) просто если я не смогу это сделать, то проект заброшу, чего не хотелось бы делать :-D

moka 11.12.2013 23:08

Ответ: IP адрес по умолчанию 127.0.0.1
 
Тебе нужен внешний IP (Public IP), определить самому его не получиться, т.к. нужна удалённая точка. Есть много разных API для этого, и можно написать простенькое приложение, на том же PHP, делаешь на него запрос, он проверяет твой Public IP и выдаёт тебе его.

ghosttt 11.12.2013 23:20

Ответ: IP адрес по умолчанию 127.0.0.1
 
кто разбирается в directplay, скажите, как при создании сервера на directplay правильно определить ip сервера? Я когда создаю сервер в окошке startnetgame, ip не указываю, ведь его при создании сервера указывать не нужно, и оно становится автоматически 127.0.0.1.

RBK 11.12.2013 23:22

Ответ: IP адрес по умолчанию 127.0.0.1
 
Для TCP ты все правильно сделал, используй TCPStreamIP.
А чтобы вместо 127.0.0.1 там был другой адрес, в коде клиента найди строку "Global ServerIP$="localhost" ; где сервер. Нужно вписать IP сервера." и замени localhost на реальный IP сервера.

Samodelkin 11.12.2013 23:27

Ответ: IP адрес по умолчанию 127.0.0.1
 
2ip.ru можно узнать свой public ip.

ghosttt 11.12.2013 23:33

Ответ: IP адрес по умолчанию 127.0.0.1
 
Это я сделал давно, но это не работает :-D
вот мой код, может так вы поможете мне
Код:

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 в коде

ghosttt 11.12.2013 23:54

Ответ: 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


Phantom 12.12.2013 01:56

Ответ: IP адрес по умолчанию 127.0.0.1
 
Должны быть какие-то средства, чтобы слушать входящие соединения на какой-то порт сразу на всех сетевых интерфейсах, тебе наверняка это нужно. Ищи что-то такое. Тогда сможешь принимать соединения хоть в локалке, хоть с интернета (если на роутере нужные порты проброшены).

ghosttt 12.12.2013 16:24

Ответ: IP адрес по умолчанию 127.0.0.1
 
А как тогда создавать игру в directplay на public ip? У меня когда я создаю игру на directplay ip всегда loopback

DStalk 12.12.2013 17:01

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

Узнай (укради, купи у провайдера) внешний (выделенный, белый) IP для своего интернет-подключения и на него подключайся с другого компа.

ghosttt 12.12.2013 17:25

Ответ: IP адрес по умолчанию 127.0.0.1
 
так у меня не получится подключаться на внешний ip с того же компа где и сервер?


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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot