코딩/python - 코드
[python] file 소켓을 통한 txt파일 전송 서버->클라이언트
투비치
2020. 11. 10. 13:50
728x90
소켓통신을 하게되면
서버측은 소켓생성 -> bind -> listen -> accept -> 소켓닫기 형식으로 이루어집니다.
클라이언트 측은 소켓생성 -> 소켓연결(서버측으로) -> 소켓닫기 형식으로 이루어집니다.
간단히 코드는 에코 서버로 진행하였습니다. 해당코드는 서버와 클라이언트가 같은 네트워크상에 있어야 작동이 가능합니다.
서버
#서버
import socket
import sys
import os
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
PORT = 9891
s.bind(('127.0.0.1', PORT))
s.listen(10)
conn,addr = s.accept()
f = open("out.txt", "rb")
data = f.read(1024)
while data:
conn.send(data)
data = f.read(1024)
f.close()
conn.close()
서버의 경우 파일을 읽기모드로 해당파일의 정보를 읽어오고 파일의 정보를 읽은 데이타를 클라이언트 측으로 보내주게 된다.
(while에서 데이타의 끝이 나타나면 while문은 종료된다.)
클라이언트
import socket
import sys
import os
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
PORT = 9888
ServerIp = '127.0.0.1'
s.connect((ServerIp, PORT))
data = s.recv(1024)
f = open("output.txt", "wb")
while data:
f.write(data)
data = s2.recv(1024)
f.close()
s.close()
클라이언트의 경우 쓰기모드로 서버측에서 전송된 파일의 정보를 하나의 변수에 recv를 이용해서 저장하고, while을 이용해서 해당 파일에 데이터를 쓰게된다.
간단히 에코서버나 같은 네트워크에서 작은 파일을 전송할 때 이용할 수 있을 것 같다.
728x90