程序池版socket併發聊天

2022-02-01 06:08:17 字數 1233 閱讀 2811

server

#pool內的程序數預設是cpu核數,假設為4(檢視方法os.cpu_count())

#開啟6個客戶端,會發現2個客戶端處於等待狀態

#在每個程序內檢視pid,會發現pid使用為4個,即多個客戶端公用4個程序

from socket import *

from

multiprocessing import pool

import os

server=socket(af_inet,sock_stream)

server.setsockopt(sol_socket,so_reuseaddr,1)

server.bind((

'127.0.0.1

',8080

))server.listen(5)

def talk(conn):

print(

'程序pid: %s

' %os.getpid())

while

true:

try:

msg=conn.recv(1024

)

if not msg:break

print(

"receive:{}

".format(msg))

conn.send(msg.upper())

except exception:

break

if __name__ == '

__main__':

p=pool(4

)

while

true:

conn,*_=server.accept()

client

from socket import *client=socket(af_inet,sock_stream)

client.connect((

'127.0.0.1

',8080))

while

true:

msg=input('

>>:

').strip()

if not msg:continue

client.send(msg.encode(

'utf-8'))

msg=client.recv(1024

) print(msg.decode(

'utf-8'))

python3 程序池版的socket併發聊天

pool內的程序數預設是cpu核數,假設為4 檢視方法os.cpu count 開啟6個客戶端,會發現2個客戶端處於等待狀態 在每個程序內檢視pid,會發現pid使用為4個,即多個客戶端公用4個程序 tcp server.py coding utf 8 import osfrom socket im...

Socket多人聊天MFC版

學習彙總 持續更新 從零搭建後端基礎設施系列 一 背景介紹 coding 環境 vs2015 win10 測試環境 vm虛擬機器 xp系統 2003server和主機win10 語言 c 類庫mfc 功能 基於伺服器 訊息的多人聊天。主要原理 server給每個連上的client都建立乙個執行緒單獨...

併發程式設計 執行緒池與程序池

以時間換空間 程序池 乙個容器,這個容器限制住你開啟程序的數量,預設是os.cpu count 我的電腦是8核,所以能開啟8個,第一次肯定只能並行的處理8個任務,只要有任務完成,程序馬上就會接下乙個任務。實現 from concurrent.futures import processpoolexe...