基於TCP協議的套接字程式設計

2022-05-19 12:58:36 字數 1569 閱讀 9127

基於socket通訊的內部演算法,當傳送的訊息為空的時候,接收端不會收到訊息,而傳送端向下執行到recv,兩端出於僵持狀態。

所以在傳送端需要有個判斷,如果傳送的為空,則重新輸入傳送內容。

socket是應用層與tcp/ip協議通訊的中間軟體抽象層,它是一組介面。

import socket

#買手機

phone=socket.socket()

#插入/繫結手機卡

phone.bind(('127.0.0.1',8080))

#開機phone.listen(5) #半連線池,限制的是請求數

#等待**連線

print('start....')

while true:

conn,client_addr=phone.accept()

print(conn)

print('已經有乙個連線建立成功',client_addr)

while true:

try:

print('服務端正在收資料...')

data=conn.recv(1024)

if len(data)==0:break

print('來自客戶端的資料',data)

conn.send(data.upper())

except connectionreseterror:

break

#掛掉**連線

conn.close()

#關機phone.close()

import socket

#買手機

phone=socket.socket()

#撥**

phone.connect(('127.0.0.1',8080))

#通訊:發\收訊息

while true:

msg=input('>>>').strip()

if len(msg)==0:continue

phone.send(msg.encode('utf-8'))

data=phone.recv(1024)

print(data)

#關閉phone.close()

import socket

#買手機

phone=socket.socket()

#撥**

phone.connect(('127.0.0.1',8080))

#通訊:發\收訊息

while true:

msg=input('>>>').strip()

if len(msg)==0:continue

phone.send(msg.encode('utf-8'))

data=phone.recv(1024)

print(data)

#關閉phone.close()

注意:必須先啟動服務端,開啟埠後才能再開啟客戶端。

在沒有併發通訊時,客戶端1和伺服器建立連線,埠被占用,客戶端2向伺服器傳送資訊時,伺服器收不到資訊。只有當客戶端1斷開後,客戶端2才能向伺服器傳送訊息。

基於TCP協議的套接字程式設計

socket是應用層與tcp ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它把複雜的tcp ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議。socket模板已經為我們封裝好了,我...

基於tcp協議的套接字

簡單版本 一 服務端 import socket 1 買手機 拿到套接字物件,用來鏈結建立鏈結 phone socket.socket socket.af inet,socket.sock stream tcp稱為流式協議sock stream,udp稱為資料報協議sock dgram print ...

基於tcp的套接字程式設計

伺服器端 1 author kelvin2 date 2019 1 28 22 10 3from socket import 4 server socket.socket af inet,sock stream 5 server.setsockopt sol socket,so reuseaddr,...