socket程式設計

2021-10-07 18:00:18 字數 3278 閱讀 6159

socket是應用層與tcp/ip協議族通訊的中間軟體抽象層,它是一組介面。它把複雜的tcp/ip協議隱藏在socket介面的後面,對使用者而言,一組介面就是全部,讓socket去組織資料。

常用的三類tcp/ip協議的套接字:

流式套接字(sock_stream):

流式套接字用於提供面向鏈結、可靠的資料傳輸服務,使用tcp協議。

資料報套接字(sock_dgram):

資料報套接字提供了一種無連線的服務,該服務不能保證資料傳輸的可靠性,使用udp協議。

原始套接字(sock_raw):

原始套接字允許對較低層次的協議直接訪問,如ip,常用與檢驗新的協議的實現,或者訪問現有服務中配置的新裝置。

tcp服務端:

# tcp服務端

# 迴圈鏈結

from socket import

*ip_port =

('127.0.0.1'

,8000

)back_log =

5buffer_size =

1024

tcp_server = socket(af_inet,sock_stream)

#建立服務端

tcp_server.bind(ip_port)

#繫結ip及埠

tcp_server.listen(back_log)

#開啟服務端

while

true

:print

("服務端開啟了,等待連線"

) conn,addr = tcp_server.accept(

)#等待連線

print

(,addr)

while

true

:try

: msg = conn.recv(buffer_size)

#收資訊

ifnot msg:

break

print

("來自客戶端的資訊》"

,msg.decode(

"utf-8"))

conn.send(msg.upper())

#發資訊

except exception:

print

("該鏈結關閉\n"

)break

conn.close(

)#關閉鏈結

tcp_server.close(

)#關閉服務端

tcp客戶端:

## tcp 客戶端

from socket import

*ip_port =

('127.0.0.1'

,8000

)buffer_size =

1024

tcp_client = socket(af_inet,sock_stream)

#建立客戶端

tcp_client.connect(ip_port)

#建立連線

while

true

: msg =

input

(">>>")if

not msg:

continue

if msg ==

'quit'

:break

tcp_client.send(msg.encode(

'utf-8'))

#發資訊

data = tcp_client.recv(buffer_size)

#收資訊

print

("來自服務端的資訊》"

,data.decode(

"utf-8"))

tcp_client.close(

)

這是乙個簡單的tcp服務端與客戶端,客戶端傳送一段字串,服務端將其大寫並返回給客戶端。

客戶端執行結果:

服務端執行結果:

udp服務端:

#udp服務端

from socket import

*ip_port =

("127.0.0.1"

,8080

)udp_server = socket(af_inet,sock_dgram)

#資料報

udp_server.bind(ip_port)

while

true

: data,addr = udp_server.recvfrom(

1024

)print

(data.decode(

"utf-8"))

udp_server.sendto(data.upper(

),addr)

udp_server.close(

)

udp客戶端:

#udp客戶端

from socket import

*ip_port =

('127.0.0.1'

,8080

)udp_client = socket(af_inet,sock_dgram)

#資料報

while

true

: msg =

input

(">>>"

) udp_client.sendto(msg.encode(

"utf-8"

),ip_port)

data,addr = udp_client.recvfrom(

1024

)print

(data.decode(

"utf-8"

))

由於udp並不需要建立鏈結,因此服務端可以同時跟多個客戶端通訊。

socket程式設計

一直以為serversocket accept之後客戶端才能發資訊,實驗後得出如下結論 1 serversocket沒有accept時,client是可以傳送資訊到server端的。2 serversocket accept之後,正在處理訊息時,client也是可以傳送資訊到server端。如果se...

Socket程式設計

對tcp ip udp socket程式設計這些詞你不會很陌生吧?隨著網路技術的發展,這些詞充斥著我們的耳朵。那麼我想問 1.什麼是tcp ip udp?2.socket在 呢?3.socket是什麼呢?4.你會使用它們嗎?什麼是tcp ip udp?tcp ip transmission cont...

socket程式設計

建立socket 建立乙個 socket,它可用於在基於 tcp ip 的網路 如 internet 上通訊。socket s new socket addressfamily.internetwork,sockettype.stream,protocoltype.tcp 若要使用 udp 而不是 ...