Socket

Windowsspezifisches Forum , API ,..
Beiträge, die plattformübergreifend sind, gehören ins 'Allgemein'-Forum.
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Socket

Beitrag von Leo »

Ich hab mal so ungefähr das Beispiel von der msdn nachgebastelt:

Code: Alles auswählen

wsaData.WSADATA
Service.sockaddr_in 
Socket.l
AcceptSocket.l
ClientAdress$ = Space(256)

WSAStartup_(2&2,@wsaData) 
Socket = socket_(#AF_INET,#SOCK_STREAM,#IPPROTO_TCP)
Service\sin_family = #AF_INET
Service\sin_addr   = inet_addr_("127.0.0.1")
Service\sin_port   = htons_(21)
bind_(Socket,@Service,SizeOf(service))
listen_(Socket,1)

Repeat
    AcceptSocket = #SOCKET_ERROR
    While AcceptSocket = #SOCKET_ERROR
        AcceptSocket = accept_(Socket,@ClientAdress$,256)
    Wend
    PrintN("Client Connected.")
    Socket = AcceptSocket
    Break
Until GetAsyncKeyState_(#VK_ESCAPE)
End 
Eigentlich müsst ich doch jetzt mit meinem FTP Clienten auf Port 21 connecten können oder? Geht aber nich :(
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

Ooops... Hab meinen Post überarbeiten müssen: Du willst einen FTP-Server mittels Winsock basteln?!

Wieso schreibst Du, dass es nicht funktioniert? Bei mir kann ich mich per FTP connecten... Mehr passiert natürlich bei Deinem Beispiel nicht.
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

Versuch mal:

Code: Alles auswählen

wsaData.WSADATA 
Service.sockaddr_in
ClientRequest.sockaddr_in
Socket.l 
AccSocket.l 

WSAStartup_(2&2,@wsaData) 
Socket = socket_(#AF_INET,#SOCK_STREAM,#IPPROTO_TCP) 
Service\sin_family = #AF_INET 
Service\sin_addr   = inet_addr_("127.0.0.1") 
Service\sin_port   = htons_(21) 
bind_(Socket, @Service, SizeOf(Service)) 
listen_(Socket,1) 

Repeat 
  sClientRequest=SizeOf(ClientRequest)
  AccSocket = accept_(Socket, @ClientRequest, @sClientRequest) 
Until AccSocket <> #INVALID_SOCKET
send_(AccSocket,Chr(10)+">>> Du bist drin <<<"+Chr(10)+Chr(10)+Chr(13),Len(">>> Du bist drin <<<")+4,0)
closesocket_(AccSocket)
closesocket_(Socket)
End
Du solltest

Code: Alles auswählen

Service\sin_addr   = #INADDR_ANY
deklarieren, weil Du Dich sonst nur über das Loopback-Interface auf Deinen FTP connecten kannst, über andere Schnittstellen jedoch nicht!
Leo
Beiträge: 420
Registriert: 26.10.2004 18:26

Beitrag von Leo »

Wow, danke dir :allright:
mit [c]Service\sin_addr = #INADDR_ANY[/c] geht's jetzt, ich kann connecten. :shock:

Was mich auch freut, ist, dass das das ganze auf einmal keine 100% cpu mehr braucht :D

Danke :allright:

P.S.: Das auf clients warten mit [c]accept[/c] werd ich wohl in einen Thread tuen müssen, oder?
real
Beiträge: 468
Registriert: 05.10.2004 14:43

Beitrag von real »

Bitte bitte :roll:
Leo hat geschrieben:Das auf clients warten mit [c]accept[/c] werd ich wohl in einen Thread tuen müssen, oder?
Ich würd's so machen - ein besserer Weg fällt mir dazu nicht ein...
Tibor
Beiträge: 42
Registriert: 29.08.2004 03:25
Wohnort: Mittelerde, südlich der großen Grasplantagen

Beitrag von Tibor »

Ich würde es mit Select machen.
Eine Anleitung dazu kannst du hier finden.
MfG Tibor
Antworten