티스토리 뷰

프로그래밍

Python 연습 문제

warpmemory 2018. 2. 13. 18:18

[        1        ]


def main():

    [        2        ]

    [        3        ]

    [        4        ]

    print(a)

    print(b)

    print(c)


if __name__ == "__main__":

    main()


[실행 결과]

172.30.1.2

b'\xac\x1e\x01\x02'

172.30.1.2


[작성조건]

1. 파이썬의 socket 라이브러리를 가져오는 코드를 작성하시오.

2. 자신의 호스트명을 ip로 반환한 결과를 a 변수에 저장하는 코드를 작성하시오.

3. a 변수의 ip 주소를 16로 변환하여 b 변수에 저장하는 코드를 작성하시오.

4. b 변수의 ip 주소를 다시10진수롤 변환하여 c 변수에 저장하는 코드를 작성하시오.


Solution
1
2
3
4
import socket
= socket.gethostbyname(socket.gethostname())
= socket.inet_aton(a)
= socket.inet_ntoa(b)
cs


친구가 Python 개인 스터디 중 위 아래 문제를 알려 달라고 해서 확인을 해보게 되었다.

평소 python socket 프로그래밍을 하지 않아서 인지, socket 으로 해결하려고 하지않고, 

직접 구현을 했는데 그것도 의미가 있을거 같아서 같이 정리해본다.

(보통 socket을 직접 사용하기보다는, 누군가 socket을 잘 랩핑해서 만들어놓은 flask나 requests 등을 사용한다.)

아래는 내가 오답으로 직접 구현한 inet_aton, inet_ntoa 이다.


python2

1
2
3
4
import socket
= socket.gethostbyname(socket.gethostname())
= ''.join(chr(int(x)) for x in a.split("."))
= '.'.join([str(ord(x)) for x in b] )
cs


python 3

1
2
3
4
import socket
= socket.gethostbyname(socket.gethostname())
= bytes.fromhex(' '.join(['{0:0{1}x}'.format(int(x),2for x in a.split(".")]))
= '.'.join([str(x) for x in b])
cs


댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
페이지
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함