Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

wysyłanie plików, Klient - Serwer


pe_pe

Rekomendowane odpowiedzi

Opublikowano

poniżej znajdują się skrypty do połączenia Klient - Serwer, których zadaniem jest przesłanie pliku. Problemy zaczynają się po jego wysłaniu, otóż pobieram plik o nazwie np. plik.txt, ale otrzymuje go bez nazwy i pusty, bądź też z nazwą, ale taką jak treść znajdującą się w pliku. Kolejnym problemem jest to, że nie wszystkie pliki

#### Klient ####

 

Func Wyslij ()

$IP_Serwer = "..."

$IP_Klient = "..."

$PORT = 1234

 

TCPStartUp ()

 

; Połączenie

While 1

$Socket = TCPConnect( $IP_Serwer, $PORT)

 

If $Socket = -1 Then

Sleep(500)

Else

$Wyslij = StringToBinary (Fileread($wyswietl), 2048)

TCPSend($Socket, $Wyslij)

TCPCloseSocket($Socket)

ExitLoop

EndIf

WEnd

 

; Nasłuchiwanie

$MainSocket = TCPListen($IP_Klient, $PORT)

If $MainSocket = -1 Then Exit

 

While 1

 

$ConnectedSocket = TCPAccept($MainSocket)

If $ConnectedSocket >= 0 Then

 

$C_Wiadomosc = TCPRecv($ConnectedSocket, 100)

 

MsgBox(0, "Informacja", $C_Wiadomosc)

Exit

EndIf

WEnd

 

EndFunc

 

 

#### Serwer ####

Func Ok ()

 

$IP_Serwer = @IPAddress1

$IP_Klient = "..."

$PORT = 1234

 

TCPStartup()

 

; Nasłuchiwanie

$MainSocket = TCPListen($IP_Serwer, $PORT)

If $MainSocket = -1 Then Exit

 

While 1

$ConnectedSocket = TCPAccept($MainSocket)

If $ConnectedSocket >= 0 Then

$plik = TCPRecv($ConnectedSocket, 2048) ; Odbiór danych z gniazda

$zapis = FileSaveDialog ("Zapisz", "C:\Users\DOM\Desktop\", "Pliki tekstowe (*.txt)", 18, $plik)

$plik = BinaryToString ($plik, 2048)

FileWrite ($zapis, $plik)

ExitLoop

EndIf

WEnd

 

; Połączenie

While 1

$Socket = TCPConnect( $IP_Klient, $PORT)

If $Socket = -1 Then

Sleep(500)

Else

TCPSend($Socket, "Dostarczono plik")

TCPCloseSocket($Socket)

Exit

EndIf

WEnd

 

EndFunc

Opublikowano

Używaj po pierwsze znacznika

[code]
[/code]

 

Druga rzecz - Kod serwera jest do bani.

 

Na początku walnij czekanie na połączonego klienta. Potem dopiero nasłuchuj.

Zrób w ten sposób żeby klient wysyłał... powiedzmy między jakimiś znacznikami nazwę pliku, a potem zawartość między innymi znacznikami. Potem wystarczy użyć StringBetween żeby wyciągnąć dane.

846331404756772371599.jpeg
Opublikowano
Dodajesz to na początku kodu i na końcu, co daje efekt taki jak mój post, ułatwia odczytanie kodu, bo są mniejsze literki itp

Opublikowano

Zmień

$Wyslij = StringToBinary (Fileread($wyswietl), 2048)

na

$Wyslij = StringToBinary (Fileread(Guictrlread($wyswietl)), 2048)

/ GA-970A-UD3 / FX-6300 / Sapphire Xtreme 5830 / OCZ ZS 550W / Brutus M23 /

| MPC Coders Team | MPC Gold Member | C#, C++, PHP, (N)ASM, AutoIT, Python, Java |

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...