Skip to content

Instantly share code, notes, and snippets.

@SPYFF
Last active October 8, 2019 09:21
Show Gist options
  • Save SPYFF/73415fa8f55f89c746ae892fd0ff222b to your computer and use it in GitHub Desktop.
Save SPYFF/73415fa8f55f89c746ae892fd0ff222b to your computer and use it in GitHub Desktop.
Alap python socket programok
#Kliens, csatlakozik a szerverhez, küld egy üzenetet és
#fogadja a szerver válaszát amit kiír a képernyőre
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("127.0.0.1", 5555))
sock.send(b"Hello!\n")
reply = sock.recv(1024)
print(reply)
sock.close()
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("127.0.0.1", 5555))
def open_bin(filename):
with open(filename, "rb") as f:
while True:
buff = f.read(1024)
if not buff:
return
yield buff
prev = 0
md5 = hashlib.md5()
for buff in open_bin("data.bin"):
prev = zlib.crc32(buff, prev)
md5.update(buff)
sock.send(buff)
else:
print("CRC32: ", hex(prev))
print("MD5: ", md5.hexdigest())
#Chat broadcast szerver: fogadja a kiensek csatlakozását és az üzeneteiket
#továbbküldi a csatlakozott klienseknek
import socket
import select
socks = []
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
srv.bind(("0.0.0.0", 5555))
srv.listen()
socks.append(srv)
while True:
readable, writeable, err = select.select(socks, [], [], 0)
for s in readable:
if s == srv:
client, client_address = srv.accept()
print("New client from", client_address)
socks.append(client)
else:
msg = s.recv(1024)
if msg: #[sock.send(msg) for sock in socks if sock != s and sock != srv]
for sock in socks:
if sock != s and sock != srv:
sock.send(msg)
else:
socks.remove(s)
s.close()
#Szerver, bejövő kapcsolat esetén vár egy üzenetre,
#majd erre az üzenetre küld egy választ
import socket
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srv.bind(("0.0.0.0", 5555))
srv.listen()
client, client_address = srv.accept()
message = client.recv(1024)
print(message)
client.send(b"Hello client!\n")
client.close()
srv.close()
import socket
import struct
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(("127.0.0.1", 5555))
msg = (2019, b"HELLO", 0.5)
msg_packed = struct.Struct("I 5s f").pack(*msg)
sock.sendall(msg_packed)
sock.close()
import socket
import struct
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srv.bind(("0.0.0.0", 5555))
srv.listen()
client, client_address = srv.accept()
msg_packed = client.recv(1024)
msg = struct.Struct("I 5s f").unpack(msg_packed)
print(msg)
client.close()
srv.close()
import select
import socket
import sys
socks = []
sockmap = {}
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
srv.bind(('0.0.0.0', 5555))
srv.listen()
socks.append(srv)
while True:
readable, _, _ = select.select(socks, [], [], 0)
for s in readable:
if s == srv:
cli, _ = srv.accept()
remote = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
remote.connect((sys.argv[1], int(sys.argv[2])))
sockmap[cli] = remote
sockmap[remote] = cli
socks.append(cli)
socks.append(remote)
else:
msg = s.recv(4096)
if not msg:
s.close()
sockmap[s].close()
socks.remove(s)
socks.remove(sockmap[s])
else:
sockmap[s].sendall(msg)
srv.close()
import socket
import select
import sys
#python3 tcp_proxy.py 80 ik.elte.hu 80
srv = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
srv.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
srv.bind(("0.0.0.0", int(sys.argv[1])))
srv.listen()
client, client_address = srv.accept()
remote = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
remote.connect((sys.argv[2], int(sys.argv[3])))
while True:
readable, _, _ = select.select((client, remote), [], [], 0)
for s in readable:
msg = s.recv(4096)
if msg:
if s == client:
print("from client: *************")
remote.send(msg)
else:
print("from remote: *************")
client.send(msg)
print(msg)
client.close()
remote.close()
srv.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment