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

połączenie tcp


pe_pe

Rekomendowane odpowiedzi

Opublikowano

w owym połączeniu występuje problem z StrinSplit...prosiłbym o pomoc

 

Klient

Func recv_data() ;funkcja nasłuchująca
Local $recv = TCPRecv($SOCKET, 2048)
If $recv <> '' Then
 If $wysylanie = True Then
  FileWrite($file, $recv)
  If FileGetSize(@ScriptDir&"\"&$split[0]) = $split[1] Then
   $wysylanie = False
   MsgBox(0, "", "Zakonczono wysylanie!")
  EndIf
  Return
 EndIf
 ;instrukcje co i jak przy dostaniu danych
 If StringLeft($recv, 9) = "startsend" Then
  inputbox('', 'otrzymałem od serwera:', $recv)
  $recv = StringReplace($recv, "startsend", "")
  inputbox('', 'po stringreplace', $recv)
  Global $split = StringSplit($recv, ";", 2)
  If Not IsArray($split) Then
   MsgBox(0, '', 'błąd stringsplit')
   Return
  EndIf
  msgbox(0, '', 'tworzę plik')
  Global $file = FileOpen(@ScriptDir&"\"&$split[0], 10)
  send_data("wysylaj")
  msgbox(0, '', 'ok, odbieram')
  $wysylanie = True
 EndIf
EndIf
EndFunc
Func send_data($data) ;wysyłanie danych na serwer
TCPSend($SOCKET, $data)
EndFunc
Func errbox($text) ;msgbox z błędem
MsgBox (16, "Błąd!", $text)
EndFunc
#endregion
While 1
Sleep (100)
WEnd

 

Serwer

Func listen() ;funkcja nasłuchująca (dołączanie nowych klientów)
Local $connect = TCPAccept($SERVER)
If $connect >= 0 Then
 $clients_connected += 1
 $sockets[$clients_connected] = $connect
 MsgBox(0, "", "Połączono!")
EndIf
EndFunc
Func recv_data() ;funkcja pobierająca dane od klientów
For $i = 0 To $clients_connected Step +1
 Local $recv = TCPRecv($sockets[$i], 2048)
 If $recv <> '' Then
  ;tutaj mozna wstawić specjalne sytuacje - komendy, itp.
  If $recv = "wysylaj" Then
   wyslij()
  EndIf
  For $a = 0 To $clients_connected Step +1
   If $i <> $a Then TCPSend($sockets[$a], $recv)
  Next
 EndIf
Next
EndFunc
Func send_data($data, $client = -1)
If $client = -1 Then
 For $i = 0 To $clients_connected Step +1
  TCPSend($sockets[$i], $data)
 Next
Else
 TCPSend($sockets[$client], $data)
EndIf
EndFunc
Func disc_client($client_id, $reason) ;odłączanie klienta (obsługa powodów )
TCPSend($sockets[$client_id], "[disconnect:"&$reason&"]")
TCPCloseSocket($sockets[$client_id])
$clients_connected -= 1
EndFunc
Func stopserver() ;zatrzymywanie serwera
AdlibUnRegister("listen")
AdlibUnRegister("recv_data")
For $i = 0 To $clients_connected Step +1
 disc_client($i, "server_shutdown")
Next
TCPCloseSocket($SERVER)
TCPShutdown()
EndFunc
Func errbox($text) ;msgbox z błędem
MsgBox (16, "Błąd!", $text)
EndFunc
Func openfile()
Global $file = FileOpen(@DesktopDir&"\plik.txt")
send_data("startsendplik.txt;"&FileGetSize(@DesktopDir&"\plik.txt"))
MsgBox(0, '', 'czekam na odpowiedź')
EndFunc
Func wyslij()
Local $read = 'z'
MsgBox(0, "", "wysyłam...")
While $read <> ''
 $read = FileRead($file, 1024)
 send_data($read)
WEnd
MsgBox(0, "", "wysłano")
EndFunc
#endregion
While 1
Sleep (100)
WEnd

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...