#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...