클라이언트 서버 1:1 네트워크 프로그래밍입니다.
서버를 실행하면 memo.txt를 읽어 모스 부호로 변환합니다.
클라이언트가 접속하면 변환한 모스 부호를 보내주고
클라이언트는 이를 받아 다시 문자로 변환하여 rcv_memo.txt로 저장하는 코드입니다.
server.py
"""
서버와 클라이언트 연결
"""
from socket import *
import module
myip = '127.0.0.1' # 서버 IP 주소
myport = 62580 # 클라이언트가 최초 연결할 포트
with open('memo.txt', 'r', encoding='utf-8') as f:
message = f.readline() # KOREA WELCOME
mos_msg = module.alp2mos(message) # mos...
# message = "Welcome"
address = (myip, myport) # 주소는 (IP, Port)쌍의 튜플 형태로
serversock = socket(AF_INET, SOCK_STREAM) # 소켓 생성
serversock.bind(address) # 소켓에 주소 전달
serversock.listen() # 외부에서 연결 요청 사능한 상태
clientsock, addr = serversock.accept()
clientsock.send(bytes(mos_msg, encoding='utf-8'))
client.py
"""
ex0824_1서버에 접속할 클라이언트
"""
from socket import *
import module
serverip = '127.0.0.1'
serverport = 62580
serveraddress = (serverip, serverport)
mysock = socket(AF_INET, SOCK_STREAM)
mysock.connect(serveraddress)
data = mysock.recv(1024)
print(data.decode("utf-8"))
with open('rcv_memo.txt', 'w') as f:
new_data = data.decode("utf-8")
f.write("{}\n".format(new_data))
f.write("\t{}".format(module.mos2alp(new_data)))
module.py
"""
모스부호를 문장으로 변환합니다.
ABCDE --> AE BB CD
.-
-...
-.-.
-..
.
"""
mos = ('.-', '-...', '-.-.', '-..', '.', '..-.', '--.', '....', '..',
'.---', '-.-', '.-..', '--', '-.', '---', '.--.', '--.-', '.-.',
'...', '-', '..-', '...-', '.--', '-..-', '-.--', '--..')
def alp2mos(param):
result = ""
# ord('A') == 65, ord('Z') == 90, ord(' ') == 32
for i in param:
tmp = ord(i)
if tmp > 64 and tmp < 91:
result += mos[tmp-65] + ' '
elif tmp == 32:
result += ' '
print(param, result)
return result
def mos2alp(param):
result = ""
# ord('A') == 65, ord('Z') == 90, ord(' ') == 32
mos_list = param.split(' ')
for m in mos_list:
length = len(mos)
if m == '':
result += ' '
continue
for i in range(length):
if m == mos[i]:
result += chr(i + 65)
break
print(param, result)
return result
if __name__ == '__main__':
mymos = alp2mos('KOREA BLUE')
mos2alp(mymos)
'프로그래밍 > python' 카테고리의 다른 글
_와 __의 차이 (0) | 2020.08.27 |
---|---|
빅텍스트 출력하기 (0) | 2020.08.21 |
정규식을 이용해 html 태그 제거하기 (0) | 2020.08.21 |