python 간이 채 팅 방 실현(Linux 단말기)

6020 단어 python채 팅 방
본 논문 의 사례 는 python 이 간단 한 채 팅 방 을 실현 하 는 구체 적 인 코드 를 공유 하여 여러분 께 참고 하 시기 바 랍 니 다.구체 적 인 내용 은 다음 과 같 습 니 다.
단체 대화방
1.기능:qq 단체 채 팅 과 유사 한 기능
1.누군가가 채 팅 방 에 들 어가 면 이름 을 입력 해 야 하 며 이름 은 중복 할 수 없습니다.
2.채 팅 방 에 들 어 가 는 사람 이 있 으 면 다른 사람 이 알림 을 받는다.
채 팅 방
3.한 사람 이 메 시 지 를 보 내 면 다른 사람 이 메 시 지 를 받는다.
xxx:xxxxxxxx
4.채 팅 방 에서 나 가 는 사람 이 있 으 면 다른 사람 도 알림 을 받는다.
채 팅 방
5.확장 기능:서버 메시지 공지,서버 에서 메 시 지 를 보 내 면 누구나 받 을 수 있 습 니 다.
관리자 메시지:xxxxxxxx
2.기술 모델 확정
1.서버 와 클 라 이언 트
서버 처리 요청,관리자 메시지 보 내기
클 라 이언 트 가 각종 기능 을 수행 합 니 다.
2.소켓 선택:udp 소켓
3.메시지 전송 모델:전송
클 라 이언 트~>서버~>기타 클 라 이언 트
4.사용자 정보 저장:{name:addr}
5.송 수신 처리 관계:다 중 프로 세 스 각각 송 수신 처리
3.주의사항
1.패키지 디자인
2.하나의 기능 모듈 을 써 서 하나의 모듈 을 테스트 한다.
3.주석 추가 주의

#coding =utf-8
'''
chat room
env:python3.5
exc:socket and fork
name:mianmabb
email:[email protected]
     :
1.      
2.       
    *     
    *         
    *          
    *         ,            
    *         
3.    
    *     ,      ,  L(    ),C(   ),Q(     )
    *      
4.       
5.        
'''

from socket import *
from os import *
from sys import *

user = {}   #                 

#    
def do_login(s,name,addr):
    if name in user:    #          
        s.sendto('       '.encode(),addr)
        return
    else:    #     ,       'OK'
        s.sendto(b'OK',addr)

    #  :       ,        
    msg = '
%s '%name for i in user: # s.sendto(msg.encode(),user[i]) user[name] = addr # ( ) # def do_chat(s,name,text): msg = '%s : %s'%(name,text) # for i in user: s.sendto(msg.encode(),user[i]) # def do_quit(s,name): msg = '%s '%name for i in user: if i != name: # s.sendto(msg.encode(),user[i]) else: # EXIT s.sendto(b'EXIT',user[i]) del user[name] # # def do_request(s): # while True: try: data,addr = s.recvfrom(1024) except KeyboardInterrupt: # exit(' !') # print(data.decode()) msgList = data.decode().split() # , if msgList[0] == 'L': # do_login(s,msgList[1],addr) elif msgList[0] == 'C': text = ' '.join(msgList[2:]) # do_chat(s,msgList[1],text) elif msgList[0] == 'Q': do_quit(s,msgList[1]) def main(): s = socket(AF_INET,SOCK_DGRAM) ADDR = ('0.0.0.0',8888) s.bind(ADDR) # pid = fork() if pid < 0: print('Error') elif pid == 0: # while True: try: text = input(' : ') except KeyboardInterrupt: # exit() msg ='C %s'%text s.sendto(msg.encode(),ADDR) else: # do_request(s) main()
클 라 이언 트 기능:

'''
1.    
2.     
    *     
    *       
    *        
    *         ,        
    *             
3.  
    *               L(    ),C(   ),Q(     )
    *       
4.     
5.       
'''


from socket import *
from os import *
from sys import *

ADDR = ('127.0.0.1',8888)    #       

#      
def send_msg(s,name):
    while True:
        try:
            text = input()   #          
        except KeyboardInterrupt:   #        Ctrl+C    
            text = 'quit'

        if text.strip() == 'quit':    #    quit  
            msg = 'Q ' + name     #    ,  
            s.sendto(msg.encode(),ADDR)
            exit('       ')
        else:
            msg = 'C %s %s'%(name,text)  #    ,  ,  
            s.sendto(msg.encode(),ADDR)

#      
def recv_msg(s):
    while True:
        try:
            data,addr = s.recvfrom(1024)
        except KeyboardInterrupt:    #        Ctrl+C    
            exit()
        if data.decode() =='EXIT':   #     ,      ,  EXIT      
            exit()   #     

        print(data.decode())


#      
def main():
    s = socket(AF_INET,SOCK_DGRAM)
    while True:
        name = input('     :')     #    
        if not name:
            return
        msg = 'L ' +name
        #    
        s.sendto(msg.encode(),ADDR)
        #    
        data,addr = s.recvfrom(1024)
        if data.decode() == 'OK':
            print('       ')
            break
        else:   #    
            print(data.decode())  #            
        
    #    
    pid = fork()
    if pid < 0:
        print('Error')
    elif pid == 0:   #      
        send_msg(s,name)
    else:      #      
        recv_msg(s)


main()
먼저 서버 를 실행 하고 클 라 이언 트 를 실행 합 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기