HOME/Articles/

socket example SocketThread com main ClientChat (snippet)

Article Outline

Python socket example 'SocketThread com main ClientChat'

Functions in program:

  • def main():
  • def recieve_msg(username, s):

Modules used in program:

  • import threading, time
  • import socket
  • import sys

python SocketThread com main ClientChat

Python socket example: SocketThread com main ClientChat

import sys
import socket
import threading, time

# global variable
isNormar = True
other_usr = ''


def recieve_msg(username, s):
    global isNormar, other_usr
    print('Please waiting other user login...')
    s.send(('login|%s' % username).encode())
    while (isNormar):
        data = s.recv(1024)  # 阻塞线程,接受消息
        data = str(data,'utf-8')
        msg = data.split('|')
        if msg[0] == 'login':
            print('%s user has already logged in, start to chat' % msg[1])
            other_usr = msg[1]
        else:
            print(msg[0])


# 程序入口
def main():
    global isNormar, other_usr
    try:
        usrname = input('Please input your name:')
        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
        s.connect(("127.0.0.1", 9999))
        t = threading.Thread(target=recieve_msg, args=(usrname, s))
        t.start()
    except:
        print('connection exception')
        isNormar = False
    finally:
        pass
    while isNormar:
        msg = input()  # 接受用户输入
        if msg == "exit":
            isNormar = False
        else:
            if (other_usr != ''):
                s.send(bytes(("talk|%s|%s" % (other_usr, msg)).encode()))  # 编码消息并发送
    s.close()


if __name__ == "__main__":
    main()