Code: Select all
If InitNetwork()=0
MessageRequester("Not support TCP network", "Sorry, This software need TCP network", #MB_OK|#MB_ICONERROR|#MB_SYSTEMMODAL)
EndIf
Procedure.b SHOUTcastToSave(Host.s, Port.l, filename.s, agent.s, count.l)
Protected CRLF.s = Chr(13)+Chr(10)
Protected counter.l = 0
Protected *RecieveBuf = AllocateMemory(131072)
Protected ConnectionID = OpenNetworkConnection(Host, Port, #PB_Network_TCP)
Protected RequestData.s = "GET / HTTP/1.0"+CRLF+"Host: " + Host
RequestData +CRLF+ "User-agent: "+agent +CRLF+"Accept: */*"+CRLF+CRLF
If ConnectionID
SendNetworkString(ConnectionID, RequestData)
Repeat
Protected NetEvent = NetworkClientEvent(ConnectionID)
If NetEvent<>0
If NetEvent=#PB_NetworkEvent_Data And counter=0
Protected RecieveBufsize.l = ReceiveNetworkData(ConnectionID, *RecieveBuf, 131072)
Protected RecieveHeaderEnd.l = FindString(PeekS(*RecieveBuf,#PB_Ascii),CRLF+CRLF,0)
If RecieveHeaderEnd=0
RecieveHeaderEnd = RecieveBufsize
EndIf
Protected RecieveHeader.s = PeekS(*RecieveBuf)
If FindString(RecieveHeader, "ICY 200 OK",0)=0
CloseNetworkConnection(ConnectionID)
FreeMemory(*RecieveBuf)
ProcedureReturn #False ; Station no answer
EndIf
Protected file.l = CreateFile(#PB_Any, filename)
counter +1
If RecieveBufsize>(RecieveHeaderEnd+4)
WriteData(file, *RecieveBuf+RecieveHeaderEnd+4, RecieveBufsize-RecieveHeaderEnd-4)
EndIf
ElseIf NetEvent=#PB_NetworkEvent_Data
RecieveBufsize = ReceiveNetworkData(ConnectionID, *RecieveBuf, 131072)
WriteData(file, *RecieveBuf, RecieveBufsize)
counter +1
EndIf
EndIf
If counter=count
CloseFile(file)
CloseNetworkConnection(ConnectionID)
FreeMemory(*RecieveBuf)
ProcedureReturn #True ; Finish recoding
EndIf
Delay(1)
ForEver
EndIf
ProcedureReturn #False
EndProcedure
If SHOUTcastToSave("205.234.179.5", 80, "test.mp3", "PureHeart", 200)
MessageRequester("Finish", "Record to test.mp3", #MB_OK|#MB_ICONINFORMATION)
Else
MessageRequester("Error", "Have network trouble", #MB_OK|#MB_ICONERROR)
EndIf
End