Na szybko - prosty klient i serwer TCP
#1
Kod klepany na szybko Python 2.7 
Klient TCP:
Kod:
import socket

print "Enter target host: ",
target_host = raw_input()
print "Enter port: ",
temp2 = raw_input()

target_port = int(temp2)

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

try:
 client.connect((target_host, target_port))
 client.send(("GET / HTTP\r\n\Host: %s\r\n\r\n" % target_host))
 response = client.recv(4096)
 print response
except:
 print "Failed"
 pass

Serwer:
Kod:
import socket
import threading

print "IP to listen: ",
bind_ip = raw_input()

print "Port: ",
bind_port = int(raw_input())

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server.bind((bind_ip, bind_port))
server.listen(5)

print "\n[*] Listening at port %s:%d" %(bind_ip, bind_port)

def handle_client(client_socket):
 req = client_socket.recv(1024)
 print "[*] Got: %s" % req
 
 client_socket.send("magic")
 client_socket.close()
 
while True:
 client,addr = server.accept()
 print "[*] Connection accepted from: %s:%d" % (addr[0],addr[1])

 
 cl_handler = threading.Thread(target = handle_client,args =(client,))
 cl_handler.start()

Działanie:
[Obrazek: eKwmqUE.png]
0x DEADBEEF
Odpowiedz
#2
Robiłem w Javie i takiego klienta i czat na UDP i powiem tak.. o wiele więcej roboty było Smile
A zresztą:
https://github.com/lukasamd/java-swing-udp-chat

W każdym razie, zachęcasz do spróbowania Pythona.
Odpowiedz
#3
W javie to pewnie wygląda to tak, piszesz komunikat, po dwóch godzinach pojawia się na serwerze Craze
1. Zawsze mam rację.
2. Jeśli nie mam racji, patrz pkt 1.
Odpowiedz
#4
Nie, pojawi się niemal natychmiastowo, jeżeli nie ma problemu z połączeniem.
Java nie jest wolna, jest szybka. No chyba, że ktoś kod spier***, to faktycznie jest źle.
Odpowiedz
#5
Niektóre elementy Javy wciąż są wolne. I zawsze już takie będą, bo tak zaprojektowano język. I nie ma znaczenia moc komputera, bo zawsze na takim odpali się apkę w C i będzie... wiesz co.
1. Zawsze mam rację.
2. Jeśli nie mam racji, patrz pkt 1.
Odpowiedz
#6
Napisanie klienta UDP też nie powinno być trudne, jak chcesz mogę spróbować @lukasamd Tongue
0x DEADBEEF
Odpowiedz
#7
A to już Twoja wola. Podstawowy pewnie do napisania w kilka minut, gorzej jak chcesz samodzielnie sprawdzać datagramy, robić retransmisje, kolejkowac itp.. słowem, zrobić UDP, a narzut dodatkowych opcji z TCP po stronie serwera/klienta.
Odpowiedz




Użytkownicy przeglądający ten wątek: 1 gości