Seite 1 von 1
CreateNetworkServer auf spezielles Interface beschränken?
Verfasst: 26.04.2006 14:37
von Didelphodon
Hallo!
Mit dem PB-Befehl "CreateNetworkServer" installiert man einen Listener. Man hat aber keine Möglichkeit dabei das gewünschte Network-Interface auszusuchen. Mit "netstat -n -a" sieht man, dass auf 0.0.0.0 gelistened wird. Ich würd das ganze aber gerne auf 127.0.0.1 beschränken, was eigentlich ja auch gehen sollte.
Frage: Wie mach ich das am besten?
LG Didel.
Verfasst: 26.04.2006 18:40
von manunidi
Interessante Frage! Kann uns das jemand beantworten, da ich das jetzt auch gebrauchen könnte...
Verfasst: 26.04.2006 19:24
von real
Wirklich ziemlich schwach, dass es nicht als Option unter PB möglich ist. *AscheAufMeinHaupt*
Dazu gibts bei Socket-Programmierung das Kommando bind(). Hab anfangs versucht, nach CreateNetworkServer() das bind() aufzurufen, ging aber - verständlich - in die Hose. Unter Windows geht's aber dennoch auf diese Art, also OHNE CreateNetworkServer(), über reine Sockets:
Code: Alles auswählen
#PORT = 2222
#WM_NETZWERK = #WM_USER + 100
OpenWindow(0,0,0,200,100,"Server auf 127.0.0.1",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
InitNetwork()
sock = SOCKET_(#AF_INET,#SOCK_STREAM,#IPPROTO_TCP)
addr.sockaddr_in
addr\sin_family = #AF_INET
addr\sin_port = htons_(#PORT)
addr\sin_addr = inet_addr_("127.0.0.1");
bind_(sock,@addr,SizeOf(addr))
listen_(sock,0)
WSAAsyncSelect_(sock,WindowID(0),#WM_NETZWERK,#FD_ACCEPT|#FD_READ|#FD_CLOSE)
Repeat
Event = WaitWindowEvent()
Select Event
Case #PB_Event_CloseWindow
End
Case #WM_NETZWERK
MessageRequester("Server","Auf dem Port tut sich was!")
EndSelect
ForEver
Das Message-Handling sollte dann jedoch über SetWindowCallback() realisiert werden.
Verfasst: 29.04.2006 23:16
von Didelphodon
Danke, real!
Vielleicht könnte sich einer von den PB-Indianern ja mal diesem Thema für eine der nächsten Versionen annehmen?!
LG Didel.
Verfasst: 30.04.2006 00:15
von AND51
Hallo!
Ich verstehe das nicht so ganz... Moechtest du, dass nur Verbindungen von 127.0.0.1 angenommen werden?
Wenn ja, dann nimm doch den neuen GetIP() Befehl von PB 4 und pruefe damit die Adresse. Wie gesagt, ich verstehe das Topic nicht so ganz...
Verfasst: 30.04.2006 00:36
von Didelphodon
Es geht darum, das Interface auszuwählen, auf dem auf Port xy gehorcht werden soll. Sinnvollerweise macht man das z.B. für Anwendungen, die aus Teilen bestehen, die wiederum miteinander über TCP/IP kommunizieren. Damit dies nicht über das physikalische Interface (Netzwerkkarte) passiert (das wäre nämlich voll unnötig und noch dazu ein höheres Angriffsrisiko), kann sinnvollerweise dieses Horchen auf (in diesem Fall) 127.0.0.1 eingeschränkt werden. Bei 0.0.0.0 wird auf jedem Interface, das dem PC bekannt ist gehorcht!!
LG Didel.