Sign in to follow this  
Followers 0
GoFor

TCP Ip

1 post in this topic

I have 3 PC (1 laptop 2 PC) and i wan't to do something that: Click Send, write what do you want send and it sending this message to the other my pc. And this is my code:

Server:

TCPStartup() ;start usługi TCP
$mainsocket = TCPListen("25.95.81.129", 32399) ;utworzenie głównego gniazda nasłuchu
While 1 ;pętla nasłuchiwania
   $acceptedSocket = TCPAccept($mainsocket) ;możliwe połączenie do zaakceptowania
   If $acceptedSocket <> -1 Then ;jeśli $acceptedSocket jest różne od -1, ...
 $receivedData = TCPRecv($acceptedSocket, 1024) ;jeśli gniazdo jest połączone odbieramy pakiet od klienta
      MsgBox(64, "Wiadomość otrzymana!", "Otrzymałem wiadomość: " & $receivedData)
      TCPCloseSocket($acceptedSocket) ;zamknięcie otwartych połączeń
   EndIf
WEnd

Client:

#include <GUIConstants.au3>


TCPStartup() ;start usługi TCP


Global $serwer1 = '25.95.81.129'
Global $serwer2 = Null
Global $serwer3 = Null
Global $port = '32399'


$logowanie=GUICreate("Klient", 250, 100)
$zaloguj=GUICtrlCreateButton('Send',70,44,100,20)


$serwery=GUICtrlCreateCombo("serwer 1", 70, 22, 100, 20, $CBS_DROPDOWNLIST)  ; pierwsza pozycja listy
GUICtrlSetData($serwery, "serwer 2|serwer 3", "serwer 1")
GuiSetState(@SW_SHOW,"Klient")


$panel=GUICreate("Klient - panel", 250, 100)
$przeslij=GUICtrlCreateButton('Przeslij',70,44,100,20)
$rozlacz=GUICtrlCreateButton('Rozłącz',70,64,100,20)




Do
   $msg = GUIGetMsg()
   Switch GUICtrlRead($serwery)
      Case "serwer 1"
$wybral = $serwer1
EndSwitch
   if $msg = $zaloguj Then
 $wiadomosc=InputBox ( "Klient-serwer", "Write message" , "" , "" , 300 , 300 , 0 , 0)
 if $wiadomosc = "" Then
MsgBox(0,'klient','nie mozesz wyslac pustej wiadomosci')
 Else
$serwer=GUICtrlRead($serwery)
if $serwer = 'serwer 1' Then
 $socket = TCPConnect($serwer1, $port) ;próbuje połączyć się z serwerem i zapisuje nr gniazda w $socked
   ElseIf $serwer = 'serwer 2' Then
 $socket = TCPConnect($serwer2, $port) ;próbuje połączyć się z serwerem i zapisuje nr gniazda w $socked
   ElseIf $serwer = 'serwer 3' Then
 $socket = TCPConnect($serwer3, $port) ;próbuje połączyć się z serwerem i zapisuje nr gniazda w $socked
 EndIf
If $socket = -1 Then ;jeśli $socket = -1, komunikat o błędach
MsgBox(16, "Błąd:", "Połączenie z serwerem nie można ustalić!")
EndIf
 $sendedBytes = TCPSend($socket, $wiadomosc) ;wysyła wiadomość do połączonego gniazda
 If $sendedBytes = 0 Then ;jeśli wartość zwracana TCPSend(...) = 0 to wystąpił błąd
MsgBox(16, "Error", "Pakiet nie może być wysłany.") ;komunikat błędu
 EndIf
 TCPCloseSocket($socket) ;zamknięcie otwartego połączenia
 TCPShutdown() ;koniec usługi TCP
   EndIf
   EndIf


   if $msg = $przeslij Then
 $wiadomosc=InputBox ( "Klient-serwer", "Wpisz wiadomosc ktora chcesz przekazac" , "" , "" , 300 , 300 , 0 , 0)
 if $wiadomosc = "" Then
MsgBox(0,'klient','nie mozesz wyslac pustej wiadomosci')
 Else
 $socket = TCPConnect("127.0.0.1", 65432) ;próbuje połączyć się z serwerem i zapisuje nr gniazda w $socked
If $socket = -1 Then ;jeśli $socket = -1, komunikat o błędach
MsgBox(16, "Błąd:", "Połączenie z serwerem nie można ustalić!")
EndIf
 $sendedBytes = TCPSend($socket, $wiadomosc) ;wysyła wiadomość do połączonego gniazda
 If $sendedBytes = 0 Then ;jeśli wartość zwracana TCPSend(...) = 0 to wystąpił błąd
MsgBox(16, "Error", "Pakiet nie może być wysłany.") ;komunikat błędu
 EndIf
   EndIf
   EndIf




   if $msg = $rozlacz Then
 TCPCloseSocket($socket) ;zamknięcie otwartego połączenia
 TCPShutdown() ;koniec usługi TCP
 Exit
   EndIf


Until $msg = $GUI_EVENT_CLOSE

Sorry for Polish strings. And when i open in 1 PC serwer, and client and i send to 1server message then it will send it but only 1 time. If i try do this second time it doesnt work (i must restart client). When I open client in second PC and open server in my first PC, i can't connect. What's going on? Help me guys ;/

 

Share this post


Link to post
Share on other sites



Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0