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

Komunikator, Serwer <> Client


Rekomendowane odpowiedzi

Opublikowano

Elo, napisałem taki prosty komunikator i postanowiłem się z wami podzielić

serwer

 

$ip = @IPAddress4
$port = "1111"
$max = 40
$0 = 0
Dim $akk[$max + 1][1]
TCPStartup ()
$TCPListen = TCPListen ($ip, $port, $max)
If $TCPListen = -1 Then
    For $0 = 1 To $max
       TCPCloseSocket ($akk[$0][0])
   Next
   TCPCloseSocket ($TCPListen)
   TCPShutdown ()
   Exit
EndIf
For $0 = 0 To $max
   $akk[$0][0] = 0
   Sleep (10)
Next

while 1
lol()
rev()
sleep(300)
WEnd

func lol()
If $akk[0][0] = $max Then Return
$Accept = TCPAccept($TCPListen)
 If $Accept = -1 Then Return
For $0 = 1 To $max
       If $akk[$0][0] = 0 Then
		$aha = tcprecv($Accept,10000)
		$akk[$0][0] = $Accept
		traytip("polaczenie id",$Accept,1)
		$akk[0][0] += 1
		bac("Podłączył się " & $aha)
		Return
	EndIf
Next
Return
EndFunc

Func rev()
   For $0 = 1 To $max
       $wys = TCPRecv ($akk[$0][0],1000000)
	if not $wys = "" Then
       bac($wys)
	EndIf
   Next
EndFunc

func bac($pp)
				for $00 = 1 to $max
TCPSend ($akk[$00][0], $pp & @CRLF)
Next
$0 = 0
$00 = 0
Return
EndFunc

 

 

client

 

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiEdit.au3>
TCPStartup()
global $nick
$ip = "ip"
$port = "1111"
$nick = inputbox("AHA","AHA")
For $0 = 0 To 10
   $Socket = TCPConnect($ip, $port)
TCPSend($socket,$nick)
   If $Socket <> -1 Then ExitLoop
   TCPCloseSocket($Socket)
msgbox(0,"","Nie mona się połączyć z serwerem")
   Sleep(300)
Next
If $Socket = -1 Then
msgbox(0,"","Nie mona się połączyć z serwerem")
TCPCloseSocket ($Socket)
   TCPShutdown()
   Exit
EndIf
ToolTip("Polaczono",0,0)
GUIRegisterMsg(0x0112 , '_WM_SYS_COMMAND')
GUIRegisterMsg($WM_COMMAND, 'WM_COMMAND')
#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Form1", 198, 187, 192, 124)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 185, 89, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_HSCROLL,$WS_VSCROLL))
GUICtrlSetData(-1, "")
$Edit2 = GUICtrlCreateEdit("", 8, 104, 185, 49, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
GUICtrlSetData(-1, "")
$Button1 = GUICtrlCreateButton("Button1", 120, 160, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

while 1
recv()
sleep(100)
WEnd
Func recv ()
   $Recv = TCPRecv($Socket, 1000000)
   _GUICtrlEdit_AppendText($Edit1,$Recv)
EndFunc




Func _WM_SYS_COMMAND($hWnd, $iMsg, $wParam, $lParam)
       Switch $hWnd
               Case $Form1_1
                       Switch $wParam
						Case 0xF060
							TCPCloseSocket ($Socket)
                                      Exit
                       EndSwitch
       EndSwitch
EndFunc

Func WM_COMMAND($hWnd, $iMsg, $wParam, $lParam)
If BitAND($wParam, 0x0000FFFF) =  $GUI_EVENT_CLOSE Then $Interrupt = 1
Switch BitAND($wParam, 0xFFFF)
	Case $Button1
		    $0 = GUICtrlRead ($Edit2)
   If $0 = '' Then Return
   TCPSend($Socket,$nick & " - " & $0)
guictrlsetdata($Edit2,"")
EndSwitch
Return $GUI_RUNDEFMSG
EndFunc

 

 

jak by coś trzeba było wytłumaczyć to pisać :)

Opublikowano

funkcja która powinniście dodać to resetowanie nieaktywnych połączeń

niby jest określone że max 20 osób, lecz to działa 20 połączeń.

każde połączenie jest zapisane w zmiennej wygląda to tak(352 - przykład)

i jak dojdzie do 20 połączeń to nie akceptuje dalej

For $0 = 0 To $max
   $akk[$0][0] = 0
   Sleep (10)
Next

resetuje wszystko, musicie zrobić jakiś wykrywacz

chociaż wam pomoge, w funkcji bac()

jak tcpsend będzie false(@error lub 0) to ustawić zmienną na 0 :>

 

 

omg, głowiłem się nad tym w chuj czasu, a podczas pisania się skapłem ;D

 

to jest to zrobione, to spróbujcie dodać tzw. privatemsg :>

  • 4 tygodnie później...
Opublikowano

Nawet Ty używasz KODY! :D

#Region ### START Koda GUI section ### Form=
$Form1_1 = GUICreate("Form1", 198, 187, 192, 124)
$Edit1 = GUICtrlCreateEdit("", 8, 8, 185, 89, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_READONLY,$ES_WANTRETURN,$WS_HSCROLL,$WS_VSCROLL))
GUICtrlSetData(-1, "")
$Edit2 = GUICtrlCreateEdit("", 8, 104, 185, 49, BitOR($ES_AUTOVSCROLL,$ES_AUTOHSCROLL,$ES_WANTRETURN,$WS_VSCROLL))
GUICtrlSetData(-1, "")
$Button1 = GUICtrlCreateButton("Button1", 120, 160, 75, 25, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

mpc.png

Opublikowano

mi nie działa.

 

Nic nie zmieniam, a nie działa, wiem że muszę skonfigurować pod swoje potrzeby server i może client, ale coś nie cyka ja w szwajcarskim zegarku :D (wiem że to nie jest jakieś cacko dopięte na ostatni guzik). Nie wiem może to wina adapteru.. nie znam się, ale postaram dojść do tego. (jakby co mam połączenie adapterem do livebox'a)

Opublikowano

na kompie ci nie działa ? to co masz podłączone wtedy i do czego komputer nie ma znaczenia i powinno działać

 

wystarczy na stałe w serwerze ustawić 127.0.0.1 , taki sam w kliencie

jeśli z innego kompa się łączysz to zawsze na IP komputera na którym jest odpalony serwer ( nie 127.0.0.1 bo to lokalny adres dla komputera w każdym przypadku i na każdym sprzęcie ) adres sprawdzisz w połączeniach sieciowych jaki masz przyznany dla komputera serwera

 

p.s. z tego co pamiętam gdzieś tam w starych postach jest przykład zastosowania w bocie i sterowanie grą z innego kompa , warto poszukać, temat chyba superdawny matiszona z przed roku ponad

If you = stupid then

insert(foot.in.your.ass)

end if

licznik-54-96732-stat.png

Opublikowano

Dzięki robem poradziłem sobie, ale ustawiłem IP z hamachi aby tylko osoby na hamachi mogły sie połączyć. Tak mi się zdaję :P @edit i mi się źle zdawało :P

 

heh po za tym wiem że lokalny adres każdego kompa to 127.0.0.1, bo się trochę interesuję, ale 14 ( wiem jestem młodzian :D ), ale każdemu zdarzają się błędy, a po za tym zapomniałem wpisać IP serwera (taką banalną sprawę spiepszyłem, ale działa.) :D

Opublikowano

w sumie łatwiej byłoby wykorzystać UDP do takiego komunikatora...większe możliwości a tak to byle kto może przechwycić

Cytat

 

Orientacja seksualna polega na tym, że jeden mężczyzna lubi blondynki, drugi szatynki, że jedna pani woli umięśnionych mężczyzn a inna chudych intelektualistów. Homoseksualizm nie jest orientacją jest chorobą za którą homoseksualiści nie ponoszą odpowiedzialności. Pewna grupa ludzi rodzi się upośledzona fizycznie, na przykład bez ręki ale czy to znaczy, że wszystkim zdrowym powinniśmy też obcinać ręce? Nie, powinniśmy zapewnić im protezy. Obowiązkiem państwa jest zapewnienie homoseksualistom, jak wszystkim upośledzonym fizycznie czy psychicznie profesjonalnej opieki medycznej.

  • 3 tygodnie później...
Opublikowano

Gdzie się ustawia adres ip? W cliencie i serwerze

Plus

aaaa

I minus

Plus i minus to jedyne

Plus i minus to jedyne co widzę

Plus i minus to jedyne co słyszę

Plus i minus to jedyne czym żyjeWolę być -- Więc daj mi minus

Życie, życie nasze składa się z krótkich momentów

Cudownych chwil czy przykrych incydentów

Niczego nie przegapię, wszystkie je łapię

Korzystam z talentu, przelewam go na papier

Więc łapię chwile ulotne jak ulotka

Ulotne chwile łapię jak fotka

Dbam, by chwile ulotne jak notka

Nie uleciały jak ulotna plotka

W niepamięć... Każdy gest i każde zdanie

Obrazy przed oczami zawieszone jak na ścianie

Piort 'Magik' Łuszcz

  • 1 miesiąc temu...
  • 2 tygodnie później...
  • 3 miesiące temu...
Opublikowano

A jakby zrobić komunikator p2p ( Bezpośrednia wymiana ) ,

to bym musiał zrobić komunikator który byłby jednoczesnie clientem i serverem ?

 

Dla zmiennego IP:

Ewentualnie przydałoby sie zrobić stronke , z którą łaczyłby sie pierw komunikator by zapisac tam swoje tylko IP i pobierał IP kolegów.

Przesył danym mozna by zakodować...

Tylko nie wiem co z tym portem? Jest to bezpieczne ? Nie włamie sie nikt inny jesli znajdzie moja stronke i podmieni IP kolegi na swój ?

Druga sprawa taki komunikator cały czas sie łaczy z dana osoba , czy tylko przy wysyłaniu wiadomosci?

_______________________________-

Ale z jakim selwerem to się łączy?(Gdzie się wybiera?)

jest plik server i klient

1. odpalasz plik server

3 . otwiersz client w notatniku , zmieniasz IP na swoje , zapisujesz

2.odpalasz client ( komunikator ) i piszesz sam do siebie <3

Kocham mpcforum.pl!!!

18706.png

Zarchiwizowany

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

×
×
  • Dodaj nową pozycję...