Last active
October 8, 2019 09:21
-
-
Save SPYFF/73415fa8f55f89c746ae892fd0ff222b to your computer and use it in GitHub Desktop.
Alap python socket programok
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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()) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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