龙空技术网

SocketIO做一个网络聊天室软件-客户端源码

每日出拳老爷子 47

前言:

当前咱们对“net聊天室源码”可能比较注意,各位老铁们都想要了解一些“net聊天室源码”的相关资讯。那么小编也在网上网罗了一些对于“net聊天室源码””的相关文章,希望看官们能喜欢,朋友们一起来了解一下吧!

【背景】

公司内部想要有一个可用于局域网网的聊天软件,方便部门同事们业务沟通。

做好了老板肯定开心。

上次讲了服务端的源码,今天讲下半部分客户端的源码。

【分析】

客户端需要有一个GUI界面和用户交互。

需要有两个主要线程,一个线程用来处理GUI交互,一个线程用来监听服务端信息。


【源码分析】

1. 引入python包,除了同Server一样需要引入Threading和Socket,为实现简单GUI还需要引入tkinter;

import socket

import threading

import tkinter

import tkinter.scrolledtext

from tkinter import simpledialog

2. HOST和PORT这两个基本变量赋值,注意,这里因为我是在一台机器上演示,所以HOST也写成了127.0.0.1,如果真的部署到局域网,这里要写Server的内网IP:

HOST = '127.0.0.1'

PORT = 9090

3. 创一个Client类并写构造函数。所有接下来的功能也在类下写,封装到Client类内部。


class Client:

def __init__(self,host,port):

self.sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

self.sock.connect((host,port))


msg = tkinter.Tk()

msg.withdraw()


self.nickname = simpledialog.askstring("Nickname","Please choose a nickname",parent = msg)

self.gui_done = False

self.running = True


gui_thread = threading.Thread(target=self.gui_loop)

receive_thread = threading.Thread(target=self.receive)


gui_thread.start()

receive_thread.start()

4. 创建gui_loop函数用来设置并展示GUI界面

5. gui_loop函数中给Send按钮绑定的write方法用来向Server机发送信息,并在发送后清空输入框自身内容

6. gui函数中调用的Stop方法用来在gui关闭后彻底释放资源并关闭Socket,结束程序

7. 最后的Receive函数和Server端的类似,用一个while true持续监听服务端的信息并做出反馈,直到与服务端的连接中断才跳出循环

8. 最后生成client实例即可

【源码下载】

半杯奶茶钱获得服务端客户端全部源码,可直接运行:


标签: #net聊天室源码