ВиниПур написал(а):Клиент-сервер код выше, если помучаешь поиск, то найдешь как отправлять данные и файлы.
да это я знаю просто берешь написанный выше код сервер ставишь на другой компьютер а на свой клиент водишь ip компьютера и ву аля готово но вот в чём загвоздка я только так делать умею для сайтов вот код
Код:Structure AnalystRequest
*buffer
SizeBuf.i
ClientID.l
EndStructure
#ProgName="PureBasic_Web_Server"
Port=2000;80 ; На этом порту будет работать сервер
DirFiles.s="web_files\" ; Папка с веб файлами
ProgName.s=ProgramFilename()
ProgPath.s=GetPathPart(ProgName)
WebFiles_Path.s=ProgPath+DirFiles
DefaultWebFile.s="index.html"
Error_WebFile.s="404_Eror.html"
#CorrectGMT_Time= - 2 ; Корректировка системного времени к Гринвичу
#Overload = "Извините, сервер перегружен. Зайтите немного позже."
*Buffer = AllocateMemory(64002)
AnalystRequest.AnalystRequest
If InitNetwork() = 0
End
EndIf
Procedure.s GenerateCurrentDate()
Shared CorrectGMT_Time
Protected Result.s="Date: "
Date=Date()
Date=AddDate(Date, #PB_Date_Hour, #CorrectGMT_Time)
Select DayOfWeek(Date)
Case 0 : Result+"Sun "
Case 1 : Result+"Mon "
Case 2 : Result+"Tue "
Case 3 : Result+"Wed "
Case 4 : Result+"Thu "
Case 5 : Result+"Fri "
Case 6 : Result+"Sat "
EndSelect
Result+Str(Day(Date))+" "
Select Month(Date)
Case 1 : Result+"Jan "
Case 2 : Result+"Feb "
Case 3 : Result+"Mar "
Case 4 : Result+"Apr "
Case 5 : Result+"May "
Case 6 : Result+"Jun "
Case 7 : Result+"Jul "
Case 8 : Result+"Aug "
Case 9 : Result+"Sep "
Case 10 : Result+"Oct "
Case 11 : Result+"Nov "
Case 12 : Result+"Dec "
EndSelect
Result+FormatDate("%yyyy %hh:%ii:%ss ", Date)+"GMT"
ProcedureReturn Result
EndProcedure
Procedure SendError(ClientID)
SendNetworkString(ClientID, "HTTP/1.1 404 Not Found"+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, GenerateCurrentDate()+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, "Server: "+#ProgName+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, "Content-Length: 0"+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, "Content-Type: text/html"+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, Chr($0D)+Chr($0A))
EndProcedure
Procedure.s TypeFile(Ex.s)
Protected Result.s
Result="text/html"
Ex=LCase(Ex)
If Ex="ico" Or Ex="jpeg" Or Ex="jpg" Or Ex="png" Or Ex="bmp" Or Ex="gif" Or Ex="tiff" Or Ex="tga"
Result="image/x-icon"
ElseIf Ex="css"
Result="text/css"
EndIf
ProcedureReturn Result
EndProcedure
Procedure Send_File(ClientID, File.s)
Protected Result=0, FileID, HTML_Code.s="", *HTML_Code=0
FileID=ReadFile(#PB_Any, File)
If FileID
HTML_Code.s=""
SizeFile=Lof(FileID)
If SizeFile>0
*HTML_Code=AllocateMemory(SizeFile+2)
ReadData(FileID, *HTML_Code, SizeFile)
EndIf
CloseFile(FileID)
If *HTML_Code=0
SendError(ClientID)
Else
SendNetworkString(ClientID, "HTTP/1.1 200 OK"+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, GenerateCurrentDate()+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, "Server: "+#ProgName+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, "Content-Length: "+Str(SizeFile)+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, "Content-Type: "+TypeFile(GetExtensionPart(File))+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, Chr($0D)+Chr($0A))
SendNetworkData(ClientID, *HTML_Code, SizeFile)
FreeMemory(*HTML_Code)
Debug File
Result=1
EndIf
Else
SendError(ClientID)
EndIf
ProcedureReturn Result
EndProcedure
Procedure Analyst_request(*Struct) ; Анализатор запросов от браурера
Shared ProgPath, Error_WebFile, DefaultWebFile, WebFiles_Path
Protected Info.AnalystRequest, Result=0, Rrequest_FileName.s
Protected Dim RrequestArray.s(100)
If *Struct
CopyMemory(*Struct, @Info, SizeOf(AnalystRequest) )
Rrequest.s=PeekS(Info\buffer, Info\SizeBuf)
ReplaceString(Rrequest,Chr(13),Chr(10),#PB_String_InPlace)
Rrequest=ReplaceString(Rrequest,Chr(10)+Chr(10),Chr(10))
CountString = CountString(Rrequest, Chr(10))
If CountString>0
If CountString>100 : CountString=100 : EndIf
Rrequest+Chr(10)
For i=1 To CountString
RrequestArray(i) = StringField(Rrequest, i, Chr(10))
Next i
TypeRrequest.s=RrequestArray(1)
Len=Len(TypeRrequest)
Pos=FindString(LCase(TypeRrequest),"get",1)
If Pos>0
Pos1=FindString(TypeRrequest,"/",Pos)
If Pos1>0
Pos2=FindString(TypeRrequest," ",Pos1)
If Pos2>0
Rrequest_FileName.s=Mid(TypeRrequest, Pos1+1, Pos2-Pos1-1)
Rrequest_FileName=Trim(Rrequest_FileName)
EndIf
EndIf
If Rrequest_FileName=""
Rrequest_FileName=DefaultWebFile
EndIf
Debug Rrequest_FileName
Send_File(Info\ClientID, WebFiles_Path+Rrequest_FileName)
Result=1
Else
SendError(Info\ClientID)
EndIf
Else
SendError(Info\ClientID)
EndIf
EndIf
If Result=0
Send_File(Info\ClientID, ProgPath+Error_WebFile)
EndIf
EndProcedure
If CreateNetworkServer(2, Port , #PB_Network_TCP)
;CreateFile(0,ProgPath+"log.txt")
Repeat
SEvent = NetworkServerEvent()
If SEvent
ClientID = EventClient()
Select SEvent
Case #PB_NetworkEvent_Connect ; Новый клиент подключился к серверу
Case #PB_NetworkEvent_Data ; От клинета пришли данные
CountBytes=ReceiveNetworkData(ClientID, *Buffer, 10000)
If CountBytes>=0
;WriteData(0,*Buffer, CountBytes)
;FlushFileBuffers(0)
AnalystRequest\buffer = *Buffer
AnalystRequest\SizeBuf = CountBytes
AnalystRequest\ClientID = ClientID
;Analyst_request(@AnalystRequest)
If CreateThread(@Analyst_request(), @AnalystRequest) = 0
SendNetworkString(ClientID, "HTTP/1.1 200 OK"+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, GenerateCurrentDate()+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, "Server: "+#ProgName+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, "Content-Length: "+Str(Len(#Overload)+2)+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, "Content-Type: text/html"+Chr($0D)+Chr($0A))
SendNetworkString(ClientID, Chr($0D)+Chr($0A))
SendNetworkString(ClientID, #Overload)
SendNetworkString(ClientID, Chr($0D)+Chr($0A))
Else
Delay(2)
EndIf
EndIf
Case #PB_NetworkEvent_File ; От клиента пришел файл
Case #PB_NetworkEvent_Disconnect ; Клиент разорвал соединение с сервером
EndSelect
Else
Delay(20)
EndIf
ForEver
Else
EndIf
End
этот код я взял из статьи Петра!!
вот а тут надо вить через клиент а я не могу понять как!!