群聊客戶端

2021-09-23 17:06:35 字數 1278 閱讀 2512

"""

群聊客戶端

chat room

env:python3.5

socket fork 練習

"""from socket import *

import os,sys

# 伺服器位址

addr=('176.209.104.26',9898)

# 傳送訊息

def send_msg(s,name):

while true:

try:

text=input("發言:")

except keyboardinterrupt:

text='quit'

# 退出聊天室

if text=='quit':

msg='q '+name

s.sendto(msg.encode(),addr)

sys.exit('退出聊天室')

msg="c %s %s"%(name,text)

s.sendto(msg.encode(),addr)

# 接收訊息

def recv_msg(s):

while true:

data,addr=s.recvfrom(2048)

# 服務端傳送exit表示讓客戶端退出

if data.decode()=='exit':

sys.exit()

print(data.decode())

# 建立網路連線

def main():

s=socket(af_inet,sock_dgram)

while true:

name=input('輸入姓名:')

msg="l "+name

s.sendto(msg.encode(),addr)

# 等待回應

data,addr=s.recvfrom(1024)

if data.decode()=='ok':

print("您已進入聊天室")

break

else:

print(data.decode())

# 建立新的程序

pid=os.fork()

if pid<0:

sys.exit("error!")

elif pid==0:

send_msg(s,name)

else:

recv_msg(s)

if __name__=='__main__':

main()

瘦客戶端 胖客戶端 智慧型客戶端

胖客戶端模式將應用程式處理分成了兩部分 由使用者的桌面計算機執行的處理和最適合乙個集中的伺服器執行的處理。乙個典型的胖客戶端包含乙個或多個在使用者的pc上執行的應用程式,使用者可以檢視並運算元據 處理一些或所有的業務規則 同時提供乙個豐富的使用者介面做出響應。伺服器負責管理對資料的訪問並負責執行一些...

胖客戶端 瘦客戶端和富客戶端

以c s結構開發的網路應用程式,需要為客戶端開發專用的客戶端軟體,相對而言其客戶端比較龐大,在客戶端可以實現很多功能,分擔伺服器的負擔,屬於胖客戶端型別。以b s結構開發的web應用,其客戶端只是乙個瀏覽器,所有業務邏輯由伺服器端進行處理,相對而言客戶端比較瘦小,故稱為瘦客戶端。目前比較流行的一種開...

非同步客戶端和同步客戶端

先寫下我的理解,方便後邊閱讀資料校驗。一 同步客戶端 比如乙個連線有兩個請求,請求1 和 請求2,請求1 先發起請求,請求2後發起請求,則請求2 要等待請求1 響應完成才能接收到響應。舉個棗子,httpclient 傳送get請求,執行緒會一致阻塞,直到有響應結果。二 非同步客戶端 比如乙個連線有兩...