併發伺服器模型 多執行緒伺服器

2021-09-12 12:29:27 字數 1093 閱讀 3173

#coding=utf-8

from socket import *

from threading import thread

from time import sleep

# 處理客戶端的請求並執行事情

def dealwithclient(newsocket,destaddr):

while true:

recvdata = newsocket.recv(1024)

if len(recvdata)>0:

print('recv[%s]:%s'%(str(destaddr), recvdata))

else:

print('[%s]客戶端已經關閉'%str(destaddr))

break

newsocket.close()

def main():

sersocket = socket(af_inet, sock_stream)

sersocket.setsockopt(sol_socket, so_reuseaddr , 1)

localaddr = ('', 7788)

sersocket.bind(localaddr)

sersocket.listen(5)

try:

while true:

print('-----主程序,,等待新客戶端的到來------')

newsocket,destaddr = sersocket.accept()

print('-----主程序,,接下來建立乙個新的程序負責資料處理[%s]-----'%str(destaddr))

client = thread(target=dealwithclient, args=(newsocket,destaddr))

client.start()

#因為執行緒中共享這個套接字,如果關閉了會導致這個套接字不可用,

#newsocket.close()

finally:

sersocket.close()

if __name__ == '__main__':

main()

多執行緒伺服器 程式設計模型

多執行緒的價值在於發揮多核處理器的效能,單核使用狀態機是最高效的。提高平均響應時間 處理三個半事件 連線的建立 鏈結的斷開 訊息到達 訊息傳送完畢,對於低流量的服務不必關心 好處 執行緒數目基本固定,不會頻繁建立銷毀 可以方便地調配負載 io事件發生的執行緒固定,無需考慮併發。迭代伺服器 accep...

併發伺服器模型 單程序伺服器

from socket import sersocket socket af inet,sock stream 重複使用繫結的資訊 sersocket.setsockopt sol socket,so reuseaddr 1 localaddr 7788 sersocket.bind localad...

多執行緒伺服器

posix執行緒庫 a 與執行緒有關的函式都構成了乙個完整的系列,絕大多數函式的名字都是以 pthread 打頭的。b 要使用這些庫函式,要引入標頭檔案。c 鏈結這些執行緒庫函式時要使用編譯命令的 lpthread 選項。int pthread create pthread t thread,con...