国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Python系列:摸魚小利器,使用Python創(chuàng)建一個(gè)聊天室

開發(fā) 前端
今天就來(lái)介紹如何使用Python中的socket庫(kù)搭建一個(gè)微型的聊天室,在里面不僅可以進(jìn)行實(shí)時(shí)聊天,還可以傳送文件、遠(yuǎn)程命令執(zhí)行或者聯(lián)網(wǎng)小游戲。

上班是幫老板賺錢,摸魚才是賺老板的錢。

日常摸魚跟小伙伴聊天是我們經(jīng)常干的事兒,但是對(duì)于有些位置不好的同學(xué),背對(duì)領(lǐng)導(dǎo)或者坐在過(guò)道中的,就需要時(shí)刻盯防經(jīng)過(guò)的人,以防自己上班聊天劃水摸魚被抓現(xiàn)行,那么今天就來(lái)介紹如何使用Python創(chuàng)建一個(gè)聊天室。

socket介紹

在網(wǎng)絡(luò)編程中,Socket 是一種通信機(jī)制,允許計(jì)算機(jī)在網(wǎng)絡(luò)上相互通信。Python 中的 socket 庫(kù)提供了一種簡(jiǎn)單而強(qiáng)大的方式來(lái)創(chuàng)建網(wǎng)絡(luò)應(yīng)用程序,本文將介紹socket庫(kù)的基本概念、創(chuàng)建和使用套接字(Socket)的方法以及一些常見的網(wǎng)絡(luò)編程用例。

基本概念

Socket 是一種通信的端點(diǎn),可以通過(guò)網(wǎng)絡(luò)發(fā)送和接收數(shù)據(jù)。在網(wǎng)絡(luò)編程中,通常使用兩種類型的Socket:服務(wù)器端套接字和客戶端套接字。服務(wù)器端套接字等待來(lái)自客戶端的連接請(qǐng)求,而客戶端套接字嘗試與服務(wù)器端建立連接。

創(chuàng)建服務(wù)器

import socket


# 創(chuàng)建服務(wù)器端套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 綁定地址和端口
server_address = ('localhost', 8888)
server_socket.bind(server_address)

# 監(jiān)聽連接請(qǐng)求
server_socket.listen(5)

print('Waiting for client to connect...')

# 接受客戶端連接
client_socket, client_address = server_socket.accept()
print('Connection from:', client_address)

# 接收數(shù)據(jù)
data = client_socket.recv(1024)
print('Received:', data.decode())

# 發(fā)送數(shù)據(jù)
message = 'Hello, client!'
client_socket.send(message.encode())

# 關(guān)閉連接
client_socket.close()
server_socket.close()

通過(guò)上面的代碼我們成功出創(chuàng)建了一個(gè)聊天室的服務(wù)器,其中的ip可以替換成你自己電腦的ip地址,這樣比人就可以通過(guò)IP:Port來(lái)鏈接你的電腦。

運(yùn)行后我們可以看到服務(wù)器目前正在等待連接中,接下來(lái)我們就創(chuàng)建客戶端來(lái)鏈接服務(wù)器。

創(chuàng)建客戶端

import socket

# 創(chuàng)建客戶端套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 連接到服務(wù)器
server_address = ('localhost', 8888)
client_socket.connect(server_address)

# 發(fā)送數(shù)據(jù)
message = 'Hello, server!'
client_socket.send(message.encode())

# 接收數(shù)據(jù)
data = client_socket.recv(1024)
print('Received:', data.decode())

# 關(guān)閉連接
client_socket.close()

通過(guò)上面的代碼我們已經(jīng)成功創(chuàng)建好了客戶端,鏈接服務(wù)器地址哪里修改成服務(wù)器的對(duì)應(yīng)IP和端口就行了,接下來(lái)我們就來(lái)鏈接服務(wù)器。

可以看到運(yùn)行客戶端后我們可以看到服務(wù)端和客戶端都有反應(yīng),服務(wù)端收到客戶端的連接后發(fā)送了一天消息,客戶端同時(shí)也收到了服務(wù)端發(fā)來(lái)的消息,這兩條消息是我們指定的,并且發(fā)送一條后聊天室就關(guān)閉,接下來(lái)我們來(lái)優(yōu)化一下

保持聊天室長(zhǎng)連接

這里我們使用多線程來(lái)創(chuàng)建一個(gè)持久性連接的聊天室。

服務(wù)器:

import socket
import threading

def handle_client(client_socket):
    while True:
        # 接收客戶端消息
        data = client_socket.recv(1024)
        if not data:
            break  # 如果客戶端斷開連接,退出循環(huán)
        message = data.decode()
        print(f"Received from {client_socket.getpeername()}: {message}")

        # 廣播消息給所有客戶端
        broadcast(message, client_socket)

    # 關(guān)閉連接
    print(f"Connection from {client_socket.getpeername()} closed.")
    clients.remove(client_socket)
    client_socket.close()

def broadcast(message, sender_socket):
    for client in clients:
        if client != sender_socket:
            try:
                client.send(message.encode())
            except:
                # 如果發(fā)送失敗,說(shuō)明客戶端已斷開連接,移除該客戶端
                clients.remove(client)

# 創(chuàng)建服務(wù)器端套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 綁定地址和端口
server_address = ('localhost', 8888)
server_socket.bind(server_address)

# 監(jiān)聽連接請(qǐng)求
server_socket.listen(5)

print('Waiting for clients to connect...')

# 存儲(chǔ)所有客戶端套接字的列表
clients = []

while True:
    # 接受客戶端連接
    client_socket, client_address = server_socket.accept()
    print(f"Connection from {client_address} established.")

    # 存儲(chǔ)客戶端套接字到列表
    clients.append(client_socket)

    # 創(chuàng)建一個(gè)線程來(lái)處理客戶端
    client_handler = threading.Thread(target=handle_client, args=(client_socket,))
    client_handler.start()

客戶端:

import socket
import threading

def receive_messages():
    while True:
        try:
            # 接收服務(wù)器端消息
            data = client_socket.recv(1024)
            if not data:
                break  # 如果服務(wù)器端斷開連接,退出循環(huán)
            message = data.decode()
            print("Received:", message)
        except:
            break

# 創(chuàng)建客戶端套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# 連接到服務(wù)器
server_address = ('localhost', 8888)
client_socket.connect(server_address)

# 創(chuàng)建一個(gè)線程來(lái)接收服務(wù)器端消息
receive_thread = threading.Thread(target=receive_messages)
receive_thread.start()

# 發(fā)送消息到服務(wù)器
while True:
    message = input("我是客戶端1: ")
    client_socket.send(message.encode())

這里注意,服務(wù)器和客戶端是存在不同的py文件中的,就是說(shuō)如果幾個(gè)人中需要一個(gè)人創(chuàng)建服務(wù)區(qū)和聊天室的話就需要?jiǎng)?chuàng)建兩個(gè)py文件。

然后其他小伙伴就只需要?jiǎng)?chuàng)建一個(gè)聊天室就行了,在客戶端中的message標(biāo)明你是誰(shuí)就行,接下來(lái)我們開始實(shí)驗(yàn)。

這里可以看到我們成功搭建了一個(gè)微型聊天室,每個(gè)客戶端都能收到其他客戶發(fā)送的消息,而服務(wù)端可以看到所有客戶端所發(fā)送的消息。

以上就是使用Python中的socket庫(kù)搭建一個(gè)微型的聊天室,在里面不僅可以進(jìn)行實(shí)時(shí)聊天,還可以傳送文件、遠(yuǎn)程命令執(zhí)行或者聯(lián)網(wǎng)小游戲。

當(dāng)然我給出的示例只是一個(gè)簡(jiǎn)單的多線程聊天室的示例,只是用于娛樂(lè),如果想要在項(xiàng)目中實(shí)際應(yīng)用則需要考慮到更多的安全性和錯(cuò)誤的處理,如果需要更高級(jí)的異步處理,還會(huì)用到asyncio。

責(zé)任編輯:趙寧寧 來(lái)源: Python都知道
相關(guān)推薦

2022-11-14 08:01:48

2021-02-06 23:26:25

聊天室開發(fā)WebSocket

2011-12-15 11:11:51

JavaNIO

2023-02-10 08:16:48

WebSocket簡(jiǎn)易聊天室

2022-07-26 14:53:10

WebSocket網(wǎng)絡(luò)通信協(xié)議

2015-07-06 10:42:18

PHP聊天室應(yīng)用

2021-11-16 09:38:10

鴻蒙HarmonyOS應(yīng)用

2021-10-28 22:46:13

Python機(jī)器人數(shù)據(jù)

2021-10-14 18:46:29

Websocket瀏覽器API

2023-01-13 00:02:41

2023-01-05 09:17:58

2025-05-09 08:35:00

聊天室FastAPIWebSocket

2024-04-03 15:20:08

2024-12-13 08:02:10

PythonGenerator懶加載

2022-04-18 10:36:48

社交軟件聊天平臺(tái)rocket.cha

2021-12-30 09:40:33

CentOS家庭實(shí)驗(yàn)室Linux

2011-06-09 15:44:29

Spring

2022-12-01 08:25:23

eTsTCP聊天室

2021-12-09 16:48:25

鴻蒙HarmonyOS應(yīng)用

2019-07-16 16:05:51

PythonScribusRGB
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

91成人午夜| 99久久99精品久久久久久| 日韩在线观看网址| 国外av在线| 午夜在线电影亚洲一区| 拍拍拍999自拍偷| 久久美女艺术照精彩视频福利播放| 99久久久无码国产精品性色戒| 久久高清国产| 蜜桃传媒一区二区| 亚洲看片一区| 久久本道综合色狠狠五月| 亚洲欧洲一区| 鲁丝一区鲁丝二区鲁丝三区| 中文字幕日韩一区二区不卡| 96国产粉嫩美女| 亚洲第一天堂| 国产精品二区在线| 国产一区二区三区久久久久久久久| 超碰国产精品久久国产精品99| 午夜精品视频一区二区三区在线看| 国产精品欧美一区二区| 天天综合网网欲色| 国产女主播一区二区三区| 国产精品99一区二区| 久久久久网址| 激情五月婷婷综合| 国产精品专区在线| 久久精品免费在线观看| 精品久久久噜噜噜噜久久图片 | 女人高潮特级毛片| 亚洲精品水蜜桃| 中文字幕一区二区三区免费视频| 亚洲va欧美va人人爽| 黄色av电影在线播放| 成人国产精品一区二区网站| 欧美日韩国产免费| 免费日韩av电影| 乱人伦精品视频在线观看| 欧美日韩精品久久| 麻豆91精品91久久久的内涵| 黄色三级中文字幕| 日本一区二区久久| 青青久在线视频| 日韩天堂在线观看| 青青在线精品| 国产在线视频2019最新视频| 丝袜国产日韩另类美女| 91好吊色国产欧美日韩在线| 亚洲精品国产无天堂网2021| 91精品大全| 色偷偷噜噜噜亚洲男人的天堂| 久久中文字幕导航| 成人在线看片| 大白屁股一区二区视频| 黄色一级影院| 精品福利视频一区二区三区| 午夜久久av| 91传媒视频免费| 国产成人激情av| 天堂аⅴ在线最新版在线| 欧美不卡视频一区| jazzjazz国产精品久久| 国产91亚洲精品一区二区三区| 国产麻豆精品在线观看| 91黑丝在线| 精品成人一区二区| 免费观看不卡av| 欧美亚州在线观看| 欧美国产一区视频在线观看| 成人免费高清在线播放| 中文字幕亚洲综合久久| 久久综合av| 国产美女主播在线播放| 精品久久久一区二区| 51精品视频| 国产精品久久久久久久久男| 精品系列免费在线观看| 最近中文字幕mv2018在线高清 | 小泽玛利亚av在线| 亚洲一区二区高清| se01亚洲视频| 成人做爰66片免费看网站| 国产成人激情av| 国产一二三区在线视频| 欧美激情高清视频| 久久狠狠亚洲综合| 一区二区三区性视频| 亚洲男人第一av网站| 天天操夜夜操国产精品| 久久精品国产精品亚洲色婷婷| 欧美日韩精品电影| 国产成人一区| 男人日女人下面视频| 欧美一区二区三区婷婷月色| 精品国产91| 男人添女人下面高潮视频| 欧美电影一区二区三区| 欧美激情国产在线| 成人网18免费软件大全| 中文字幕无线精品亚洲乱码一区 | 伊人一区二区三区| 欧美日韩免费电影| 亚洲精品在线观看免费| 亚洲国产精品久久不卡毛片| 一区二区在线视频观看| 国产美女在线一区| 亚洲电影成人av99爱色| 国产一区二区高清| 精品一区二区三区在线观看视频| 美女啪啪无遮挡免费久久网站| 亚洲伦理一区| 一区 二区 三区| 日韩av电影在线播放| 成人免费视频免费观看| 678在线观看视频| 久久久福利视频| 欧美在线一二三| 婷婷中文字幕一区| 丁香花高清视频完整版在线观看| 久久亚洲综合国产精品99麻豆精品福利 | 1204国产成人精品视频| 日韩视频在线观看视频| 日韩欧美国产综合| 中文一区在线| 欧美r级在线| 久久婷婷人人澡人人喊人人爽| 一本一本大道香蕉久在线精品| 久久资源中文字幕| 午夜国产在线| eeuss一区二区三区| 日本韩国欧美一区| 欧美日本中文| gogo高清在线播放免费| 色开心亚洲综合| 国产suv精品一区二区| 久久夜色精品一区| 精品国产电影一区二区| 午夜日韩在线| 欧美日韩欧美| 女同一区二区| 777午夜精品免费视频| 亚洲高清不卡| 午夜小视频福利在线观看| 欧美日韩高清在线一区| 制服丝袜亚洲色图| 男人的天堂亚洲| www在线看| 中文精品无码中文字幕无码专区| 亚洲欧美日韩精品久久亚洲区| 国产精品一区在线观看乱码 | 国产不卡在线视频| 福利一区三区| 97视频网站| 高清视频一区二区三区| 欧美一区二区三区四区视频 | 99视频这里有精品| 成人www视频网站免费观看| 18性欧美xxxⅹ性满足| 亚洲综合色成人| 一区二区三区中文| 日本三级韩国三级欧美三级| 91超碰caoporn97人人| 另类图片亚洲另类| 国产成人午夜99999| 国产精品高潮粉嫩av| 中文字幕av一区二区三区| 亚洲第一福利社区| 中文字幕在线影院| 韩国一区二区三区美女美女秀| 亚洲成人xxx| 日本一区二区三区四区在线视频| 成人在线电影在线观看视频| 精品自拍一区| 欧美 国产 日本| 国产欧美日韩中文字幕| 日韩三级在线免费观看| 91原创在线视频| 欧美gayvideo| 成人动漫一区| 日本一二三区视频免费高清| 久久久久资源| 欧美精品免费播放| 色综合天天综合| 日韩1区2区日韩1区2区| 国产人与zoxxxx另类91| 日韩欧美在线观看一区二区| 无码人妻精品一区二区蜜桃网站| 日本亚洲欧美三级| 亚洲精品乱码久久久久久按摩观| 国产精品素人视频| 久久九九国产| 日本韩国欧美超级黄在线观看| 影音先锋在线播放| 日本一区二区三区电影| 成人高清dvd| 国产精品一区二区三区在线 | 久久影视电视剧免费网站| 欧美日韩激情美女| 91网页版在线|