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

2021-09-12 12:29:27 字數 2503 閱讀 5241

from socket import *

sersocket = socket(af_inet, sock_stream)

# 重複使用繫結的資訊

sersocket.setsockopt(sol_socket, so_reuseaddr , 1)

localaddr = ('', 7788)

sersocket.bind(localaddr)

sersocket.listen(5)

while true:

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

newsocket,destaddr = sersocket.accept()

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

try:

while true:

recvdata = newsocket.recv(1024)

if len(recvdata)>0:

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

else:

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

break

finally:

newsocket.close()

sersocket.close()

#coding=utf-8

from socket import *

import time

# 用來儲存所有的新鏈結的socket

g_socketlist =

def main():

sersocket = socket(af_inet, sock_stream)

sersocket.setsockopt(sol_socket, so_reuseaddr , 1)

localaddr = ('', 7788)

sersocket.bind(localaddr)

#可以適當修改listen中的值來看看不同的現象

sersocket.listen(1000)

#將套接字設定為非堵塞

#設定為非堵塞後,如果accept時,恰巧沒有客戶端connect,那麼accept會

#產生乙個異常,所以需要try來進行處理

sersocket.setblocking(false)

while true:

#用來測試

#time.sleep(0.5)

try:

newclientinfo = sersocket.accept()

except exception as result:

pass

else:

print("乙個新的客戶端到來:%s"%str(newclientinfo))

newclientinfo[0].setblocking(false)

# 用來儲存需要刪除的客戶端資訊

needdelclientinfolist =

for clientsocket,clientaddr in g_socketlist:

try:

recvdata = clientsocket.recv(1024)

if len(recvdata)>0:

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

else:

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

clientsocket.close()

except exception as result:

pass

for needdelclientinfo in needdelclientinfolist:

g_socketlist.remove(needdelclientinfo)

if __name__ == '__main__':

main()

#coding=utf-8

from socket import *

import random

import time

serverip = raw_input("請輸入伺服器的ip:")

connnum = raw_input("請輸入要鏈結伺服器的次數(例如1000):")

g_socketlist =

for i in range(int(connnum)):

s = socket(af_inet, sock_stream)

s.connect((serverip, 7788))

print(i)

while true:

for s in g_socketlist:

s.send(str(random.randint(0,100)))

# 用來測試用

#time.sleep(1)

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

coding utf 8 from socket import from threading import thread from time import sleep 處理客戶端的請求並執行事情 def dealwithclient newsocket,destaddr while true rec...

單程序伺服器

1.完成乙個簡單的tcp伺服器 from socket import sersocket socket af inet,sock stream 重複使用繫結的資訊 sersocket.setsockopt sol socket,so reuseaddr 1 localaddr 7788 sersoc...

Web伺服器 併發伺服器 多程序(3 4 1)

目錄 在單程序的時候,相當於 是來乙個客戶,派乙個人去服務一下 效率低,現在使用多程序來服務 假設場景 100個人同時訪問頁面 單程序 一次處理,後面的會等待時間長 多程序 併發處理,一起處理 當然程序不能越多越好,硬體不支援 執行緒的開銷比程序少,但最好使用協程 注意 用process來建立子程序...