基于python的简易局域网聊天工具

需要导入的包:

socket:Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答网络请求,使主机间或者一台计算机上的进程间可以通讯。

threading:多线程模块,实现同时接收,同时发送

运行结果:

本地机器两个命令窗口不同端口号运行,实际使用可在局域网内电脑运行

源代码:

import threading
import socket

#接受信息函数
def rec(upd):
    while True:
        #接收消息,最多为1024字节
        data = upd.recvfrom(1024)
        #data为一个元组,info为信息内容,frm为发送者ip和端口号
        info, frm = data
        #设置编码格式
        info = info.decode("utf-8")
        print("收到来自"+str(frm)+'的消息:'+info)

#发送信息函数
def send(udp,dest_ip,dest_port):
    while True:
        data = input("请输入要发送的数据:")
        #发送消息
        udp.sendto(data.encode("utf-8"), (dest_ip, dest_port))


def main():
    #创建套接字
    udp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
    #设置固定端口
    port_self = int(input("请输入本地端口号"))
    udp.bind(("",port_self))
    dest_ip = input("请输入对方ip:")
    dest_port = int(input("请输入端口号"))
    #创建接收进程
    t1 = threading.Thread(target=rec, args=(udp,))
    #创建发送进程
    t2 = threading.Thread(target=send, args=(udp, dest_ip, dest_port))
    #开始接收进程
    t1.start()
    #开始发送进程
    t2.start()


if __name__ == '__main__':
    main()

 

  • 3
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python简易局域网聊天工具通常是一个简单的网络应用程序,利用Pythonsocket库和多线程或多进程技术来实现在同一局域网内的文本通信。常见的做法包括创建一个服务器端应用接收消息,然后转发给其他连接的客户端。 以下是一个基本的步骤: 1. **设置服务器**:使用`socket.socket()`创建套接字,并绑定到一个本地地址(如 `('localhost', 9000)`)。监听连接请求,当客户端连接时,为每个新连接开启一个新的线程或进程。 ```python import socket from threading import Thread server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(('localhost', 9000)) server.listen() ``` 2. **处理客户端连接**:接受新连接并创建一个子线程或子进程来处理客户端的消息发送和接收。 3. **数据传输**:用循环读取客户端发送的数据,解析后广播给所有连接的客户端;同时将接收到的数据转发给相应的客户端。 4. **用户交互界面**:如果是在GUI环境中,可以使用Tkinter等库提供简单的用户界面,如输入框和显示区域,以便用户输入和查看消息。 ```python def handle_client(client_socket): while True: data = client_socket.recv(1024) if not data: break # 客户端断开连接 broadcast(data, client_socket) # 发送广播 def broadcast(data, exclude_socket=None): for client in clients: if client != exclude_socket: client.sendall(data) # 主程序中添加新的客户端连接到clients列表 ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值