python網路程式設計之TCP聊天室

2021-09-01 06:34:00 字數 2106 閱讀 4273

socket的工作流程:

伺服器端先初始化socket,然後與埠繫結(bind),對埠進行監聽(listen),呼叫accept阻塞,等待客戶端連線。

客戶端初始化乙個socket,然後連線伺服器(connect),如果連線成功,這時客戶端與伺服器端的連線就建立了。

客戶端傳送資料請求,伺服器端接收請求並處理請求,然後把回應資料傳送給客戶端,客戶端讀取資料,最後關閉連線,一次互動結束。

tcp和udp的區別:

tcp是面向連線的,可靠的(網路傳輸中丟失的資料報會被檢測到並重新傳送),有序的(資料按傳送者寫入的順序被讀取)。

udp是面向無連線的,不可靠,無序的。

import socket

def main():

#1.建立tcp套接字

tcp_socket = socket.socket(socket.af_inet,socket.sock_stream)

#2.獲取伺服器的ip/port

server_ip = input("請輸入伺服器端的ip:")

server_port =int(input("請輸入伺服器的埠號:"))

server_address = (server_ip,server_port)

#3.連線到伺服器

tcp_socket.connect(server_address)

#5.將檔名傳送給伺服器

tcp_socket.send(down_file.encode("utf-8"))

#6.接收檔案中的資料

recv_data = tcp_socket.recv(1024) #1024:檔案大小

#7.儲存接收到的資料到檔案中

if recv_data: #recv_data中沒有資料時,if 0:不執行if下的**塊

with open("[附件]"+down_file,"wb") as f:

f.write(recv_data)

#8.關閉套接字

tcp_socket.close()

if __name__ == "__main__":

main()

import socket

def bind_listen(tcp_socket):

# 繫結資訊(bind)

tcp_socket.bind(("", 7896))

# 監聽(listen)

def send_file(new_client,other_client):

"""給客戶端傳送檔案及判斷"""

file_name = new_client.recv(1024).decode("utf-8")

#開啟檔案並且讀取資料

#假設檔案為空

file_content = none

try:

f = open(file_name,"rb") #rb:以唯讀方式開啟二進位制檔案

file_content = f.read()

f.close()

except exception as ret:

print("沒有要開啟的檔案:%s"%file_name)

if file_content:

#傳送檔案的資料給客戶端呢

new_client.send(file_content)

def main():

#建立套接字(socket)

tcp_socket = socket.socket(socket.af_inet,socket.sock_stream)

bind_listen(tcp_socket)

while true:

#等待new_client,other_client = tcp_socket.accept()

#呼叫傳送檔案的函式,給客戶端服務

send_file(new_client,other_client)

#關閉客戶端套接字

new_client.close()

#關閉伺服器套接字

other_client.close()

if __name__ == "__main__":

main()

Python中網路程式設計之TCP

tcp是一種面向連線的 可靠的 基於位元組流的傳輸層通訊協議,python 實現 伺服器端 步驟見注釋.import socket 網路之間傳輸是二進位制形式的,注意編碼和解碼 建立伺服器 sever socket.socket socket.af inet,socket.sock stream 繫...

網路程式設計之TCP程式設計

tcp程式設計中,如果要完成通訊,通訊雙方必須要建立socket,通過socket完成通訊。tcp通訊步驟 1 伺服器啟動serversocket作為通訊的server端,等待客戶端鏈入。2 客戶端建立socket作為通訊的client端 3 client端鏈入server端後建立可靠的 雙向的 持...

python網路程式設計之基於udp的簡易聊天室實現

為了讓兩個程式通過網路進行通訊,二者必須使用socket套接字 udp是面向訊息的協議,通訊時不需要建立連線,因此比較靈活,同時傳輸也是不可靠的。udp通訊模型如下 udp client.py 如下 import socket 匯入socket模組 s socket.socket socket.af...