Chat_IPv6
1.0.0
두 호스트 간의 텍스트 채팅 통신을 실현합니다. 통신은 IPv6 환경에서 수행되며 로그인 및 등록 기능, 지점간 채팅, 그룹 채팅 및 기타 기능을 완료합니다.
UDP는 연결 없는 프로토콜입니다. 소스와 터미널은 데이터를 전송하기 전에 연결을 설정하지 않습니다. 전송을 원할 때 간단히 애플리케이션에서 데이터를 가져와 가능한 한 빨리 네트워크에 보냅니다.
통신 프로토콜 수준에서 사용되는 주요 방법은 다음과 같습니다.
socket([family[, type[, proto]]])
bind(address: Union[_Address, bytes])
sendto(data, address,)
recvfrom(bufsize, flags,)
프로그래밍 과정에서 사용자의 사용자 이름, 비밀번호, 상태, 사용자 IP 주소 및 포트를 저장하는 데이터베이스가 필요합니다. 데이터베이스 선택 시 데이터베이스 마이그레이션 등을 용이하게 하기 위해 SQLite3 경량 데이터베이스를 사용했습니다.
함수 이름 | 기능 |
---|---|
초기화(자기) | 데이터베이스를 생성하고 여는 데 사용됩니다. |
select_all(자기) | 데이터베이스의 해당 테이블에 있는 모든 사용자 정보를 얻기 위해 사용됩니다. |
등록(본인, 사용자 이름, 비밀번호, IP, 포트) | 사용자 정보를 추가하기 위해 등록 중에 호출됩니다. |
search_username(본인, 사용자 이름) | 사용자 이름을 기반으로 사용자 정보 찾기 |
login_success(본인, 사용자 이름, IP, 포트) | 로그인 성공 후 데이터베이스의 사용자 상태 정보를 변경합니다. |
login_check(본인, 사용자 이름, 비밀번호, IP, 포트) | 로그인 시 사용자 이름과 비밀번호가 올바른지 확인하기 위해 사용됩니다. |
logout_success(본인, 사용자 이름) | 사용자가 로그아웃할 때 사용자 상태 변경 |
db_close(자기) | 데이터베이스 닫기 |
통신이 가능한 두 호스트의 코드가 있는 디렉터리를 입력하고 python3 Client.py
와 python3 Server.py
각각 실행합니다. 클라이언트는 필요에 따라 여러 서버를 열 수 있지만 서버는 하나만 열 수 있습니다. 서버를 시작하면 데이터베이스가 열립니다.
다양한 기능을 수행하려면 프롬프트에 따라 선택하십시오. P2P 채팅에서는 어느 쪽이든 END를 보내 채팅을 종료할 수 있으며, 상대방은 프롬프트에 따라 확인할 수 있습니다. 그룹 채팅의 구현 원리도 비슷하고, 테스트를 진행하는 과정도 비슷합니다.