Python 多執行緒網路程式設計

2021-08-03 01:58:16 字數 1832 閱讀 5968

程式工作流程如下:

# -*- coding: utf-8 -*-

from socket import *

from time import ctime

import threading #多執行緒模組

import re #正規表示式模組

host = 'localhost'

port = 10000

bufsize = 1024

addr = (host, port)

tcpsersock = socket(af_inet, sock_stream)

tcpsersock.bind(addr)

tcpsersock.listen(5)

clients = {} # 提供 使用者名稱->socket 對映

chatwith = {} # 提供通訊雙方對映

defdeal

(sock, user):

while

true:

data = sock.recv(bufsize)

if data == 'quit': # 使用者退出

del clients[user]

sock.send(data)

sock.close()

print

'%s logout' % user

break

elif re.match('to:.+', data) is

notnone: # 選擇通訊物件

data = data[3:]

if clients.has_key(data):

chatwith[sock] = clients[data]

chatwith[clients[data]] = sock

else:

sock.send('the user %s is not exist' % data)

else:

if chatwith.has_key(sock): # 進行通訊

chatwith[sock].send("[%s] %s: %s" % (ctime(), user, data))

else:

sock.send('please input the user who you want to chat with')

defmain

():while

true:

print

'waiting...'

tcpclisock, addr = tcpsersock.accept()

print

'from:', addr

username = tcpclisock.recv(bufsize) # 接收使用者名稱

print

'username:', username

if clients.has_key(username): # 查詢使用者名稱

tcpclisock.send("reuse") # 使用者名稱已存在

tcpclisock.close()

else:

tcpclisock.send("connected!") # 登入成功

clients[username] = tcpclisock # 將鍵值對匹配,便於通訊

chat = threading.thread(target=deal, args=(tcpclisock, username)) # 建立新執行緒進行處理

chat.start() # 啟動執行緒

if __name__ == '__main__':

main()

Python網路程式設計和多執行緒 網路程式設計基礎

1.ip協議 ip位址對應的實際上是計算機的網路介面,通常是網絡卡 ip協議 負責將資料從一台計算機通過網路傳送到另一台計算機。資料被分割成小塊,然後通過ip包傳送出去。網際網路鏈路複雜,兩台計算機之間通常有多條線路,路由器負責決定如何把乙個ip包 出去 ipv4 32位 8 4 ipv6 128位...

多執行緒網路程式設計

與多程序程式設計對比 1 建立多程序相比起建立多執行緒會 消耗大量的系統資源 2 程序結束比起執行緒結束,釋放的資源也更多,子程序很快結束,系統負擔加重 3.多執行緒由於在同乙個程序中,很多資源是共用的。所以執行緒間資料共享也非常高效快捷。需要注意的兩點是 1.由於多執行緒在乙個程序中,乙個程序只有...

python 多執行緒程式設計

一 執行緒基礎 1 建立執行緒 thread模組提供了start new thread函式,用以建立執行緒。start new thread函式成功建立後還可以對其進行操作。其函式原型 start new thread function,atgs kwargs 其引數含義如下 args 元組形式的引...