首页 > 编程语言 >python实现局域网及广域网私人聊天(Socket库局域网应用)

python实现局域网及广域网私人聊天(Socket库局域网应用)

时间:2024-08-05 14:59:50浏览次数:15  
标签:__ socket python server 局域网 client 客户端 port Socket

引言

在当今这个数字化时代,即时通讯已成为我们日常生活的一部分。无论是通过手机还是电脑,人们都在寻找更高效、更私密的沟通方式。想象一下,在你自己的局域网内,与朋友或同事建立一个专属的聊天室,无需担心数据泄露或者被第三方监听。本文将引导你从零开始,利用Python和Socket库,一步步创建一个简易但功能完整的局域网聊天应用。

一、项目概述

在这个项目中,我们将构建一个简单的客户端-服务器架构的聊天应用。服务器端负责接收来自客户端的消息,并将其转发给其他连接的客户端。每个客户端都可以发送消息到服务器,从而实现多用户之间的聊天交互。

二、环境准备

为了开始这个项目,你需要确保以下环境和工具已经准备好:

  1. Python 3.x 安装完成
  2. 熟悉基本的Python编程概念。
  3. 了解TCP/IP协议的基础知识。

三、开发步骤

步骤1: 设计服务器端

服务器端是整个系统的核心,它需要能够处理多个客户端的连接请求,并且能正确地转发消息。

 服务端:

代码示例(server.py):

import socket
import threading

def handle_client(client_socket):
    while True:
        message = client_socket.recv(1024).decode('utf-8')
        if not message:
            break
        print(f"Received: {message}")
        client_socket.send(input("Reply: ").encode('utf-8'))
    client_socket.close()

def start_server(host='127.0.0.1', port=65432):
    server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    server_socket.bind((host, port))
    server_socket.listen(1)
    print("Server is listening on", host, "port", port)
    
    client_socket, client_address = server_socket.accept()
    print(f"Connected by {client_address}")
    
    thread = threading.Thread(target=handle_client, args=(client_socket,))
    thread.start()

if __name__ == "__main__":
    start_server()

步骤2: 构建客户端

客户端需要能够连接到服务器,并发送消息。

代码示例(client.py):

import socket

def start_client(host='127.0.0.1', port=65432):
    client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    client_socket.connect((host, port))
    
    while True:
        message = input("Message: ")
        client_socket.send(message.encode('utf-8'))
        
        reply = client_socket.recv(1024).decode('utf-8')
        print(f"Received: {reply}")

if __name__ == "__main__":
    start_client()

四、测试与运行

  1. 启动服务器:运行server.py
  2. 启动客户端:运行client.py。注意,客户端需要连接到服务器所在的IP地址和端口。

五、运行效果

一旦客户端成功连接到服务器,就可以开始发送消息了。服务器端会显示收到的消息,并提示输入回复。客户端则会显示收到的回复。

现在,我们的聊天系统有了,但它能不能实现广域网呢?(广域网(WAN,Wide Area Network)是一种覆盖广阔地理区域的计算机网络。与局域网(LAN)相比,WAN可以连接更远距离的设备)

如果想要实现还是有一定难度,涉及到内网穿透,防火墙等等,我推荐大家一个好用的软件

贝锐花生壳(内网穿透)

它免费的资源对我们日常聊天已经足够了

下载登录之后就是这样页面,然后添加一个TCP映射。

将它给你的ip地址填进代码里面就行了。就可以实现广域网功能了。

五、总结

通过本文的学习,你现在已经掌握了如何使用Python和Socket库创建一个基本的局域网聊天应用。尽管这个应用程序非常简单,但它为更复杂的应用提供了坚实的基础。未来,你可以考虑添加更多的功能,比如用户认证、加密通信等。

记得点赞关注,我们下期再见!

标签:__,socket,python,server,局域网,client,客户端,port,Socket
From: https://blog.csdn.net/Clevermea/article/details/140911918

相关文章

  • 使用 python 抓取网页
    我有以下网页</div><ahref="https://www.emag.ro/laptop-lenovo-thinkbook-15-iil-cu-procesor-intel-core-i7-1065g7-pana-la-3-90-ghz-15-6-full-hd-16gb-512gb-ssd-intel-iris-plus-graphics-free-dos-mineral-grey-20sm003jrm/pd/DKBK1TMBM/#reviews-section&......
  • Python:需要有关类方法的帮助
    我有一个类“Duck”和“Dog”,如下所示:classDuck:defquack(self):print("quack")classDog:defbark(self):print("Ijustbark")以两种方式定义了另一个类并启动:case:1classItQuacks:def__init__(self,animal):......
  • 查找分层股东关系:在 python 中重构嵌套 if
    我想找到公司之间的股东关系。在下面的示例中,“人员1”直接拥有“公司1”50%的股份,那么需要检查“公司1”是否也拥有其他公司的股份。“公司1”拥有“公司2”50%的股份,“公司3”拥有20%的股份。这意味着“人员1”间接拥有“公司2”和“公司3”的部分股份。此......
  • 解决Python的pip问题:WARNING: Retrying (Retry(total=1, connect=None, read=None, re
    相关:pip安装第三方库报错Retrying(Retry(total=1,connect=None,read=None,redirect=None,status=None))国内镜像源下载常用国内源:清华:https://pypi.tuna.tsinghua.edu.cn/simple/阿里云:http://mirrors.aliyun.com/pypi/simple/中国科技大学https://pypi.mirrors.u......
  • Python,volcengine-python-sdk,安装失败,提示which is required to install pyproject.to
    问题描述:我是安装截止20240804发布的最新版本,volcengine-python-sdk-1.0.94.tar.gz报错一报错最后提示:whichisrequiredtoinstallpyproject.toml-basedprojects...note:Thiserrororiginatesfromasubprocess,andislikelynotaproblemwithpip.ERROR:Fai......
  • python_wholeweek3
    目录子函数的使用函数的定义嵌套的使用全局定义和局部定义子函数的使用函数的定义##############函数的三种定义方式##比较两个数大小,max是内置关键字,##第一种定义方式,无参函数#defself_max():#x,y=10,20##ifx>y:#print(x)#el......
  • Python实现简单的情感分析应用
    Python实现简单的情感分析应用情感的力量:走进情感分析的世界什么是情感分析:从日常对话到大数据分析情感分析的应用场景:从社交媒体到客户服务为何Python成为情感分析的最佳拍档准备工作:Python环境与必备库Python安装指南:快速搭建开发环境必不可少的库:nltk与TextBlob的简......
  • Python中的Web开发与API设计
    Python中的Web开发与API设计一、开篇:启航PythonWeb开发之旅1.1Python:不仅仅是脚本语言,更是Web开发的明星1.2Web开发的魔法森林:从静态到动态的转变二、基础篇:PythonWeb开发的基石2.1HTTP协议:互联网通信的通用语言2.2Flask框架:轻装上阵的小巧之选2.3Django框架:全......
  • Python实现简单的模型调优技术
    Python实现简单的模型调优技术一、开篇:模型调优的魅力所在1.1模型调优:不只是参数游戏1.2为什么好的模型也需要调优二、基础篇:理解模型调参的必要性2.1模型评估指标:选择合适的尺子2.2常见调参方法:从手动到自动化2.3验证集的重要性:不要让模型裸奔三、实战篇:动手......
  • SpringBoot-书店信息管理系统+93494(免费领源码+开发文档)可做计算机毕业设计JAVA、PHP
    基于springboot书店信息管理系统摘 要书店信息管理系统采用B/S结构、java开发语言、以及Mysql数据库等技术。系统主要分为管理员和用户两部分,管理员管理主要功能包括:首页、轮播图、公告栏、资源管理(图书资讯、资讯分类)交流管理(留言板、留言板分类)系统用户(管理员、顾客用户......