網路程式設計之socket TCP,UDP

2022-04-30 18:54:09 字數 2380 閱讀 1544

主要包括下面的幾步:
1.開啟socket

2.繫結到乙個位址和埠

3.偵聽進來的連線

4.接受連線

5.讀寫資料

主要包括下面的幾步:
1.開啟socket

2.連線到乙個位址和埠

3.讀寫資料

socket從型別上分,可以有以下幾種:

socket型別 適用範圍 說明

socket.af_unix 只能夠用於單一的unix系統程序間通訊 不能在不同主機之間通訊

socket.af_inet 伺服器之間網路通訊 目前常用的就是這種

socket.af_inet6 ipv6 由於ipv6未推廣,也少用

要記住常用的就可以,即通常會在server端和client端中程式設計會用到的,可以見下面的例子。

###server端:
import socket

sk = socket.socket()

sk.bind(('127.0.0.1',8898)) #把位址繫結到套接字

sk.listen() #監聽鏈結

conn,addr = sk.accept() #接受客戶端鏈結

ret = conn.recv(1024) #接收客戶端資訊

print(ret) #列印客戶端資訊

conn.send(b'hi') #向客戶端傳送資訊

conn.close() #關閉客戶端套接字

sk.close() #關閉伺服器套接字(可選)

###client端
import socket

sk = socket.socket() # 建立客戶套接字

sk.connect(('127.0.0.1',8898)) # 嘗試連線伺服器

sk.send(b'hello!')

ret = sk.recv(1024) # 對話(傳送/接收)

print(ret)

sk.close() # 關閉客戶套接字

###server端:
import socket

udp_sk = socket.socket(type=socket.sock_dgram) #建立乙個伺服器的套接字

udp_sk.bind(('127.0.0.1',9000)) #繫結伺服器套接字

msg,addr = udp_sk.recvfrom(1024)

print(msg)

udp_sk.sendto(b'hi',addr) # 對話(接收與傳送)

udp_sk.close() # 關閉伺服器套接字

###client端
import socket

ip_port=('127.0.0.1',9000)

udp_sk=socket.socket(type=socket.sock_dgram)

udp_sk.sendto(b'hello',ip_port)

back_msg,addr=udp_sk.recvfrom(1024)

print(back_msg.decode('utf-8'),addr)

網路程式設計 之 網路基礎

網路程式設計 1.乙個程式如何在網路上找到另乙個程式?首先,程式必須要啟動,其次,必須有這台機器位址,我們都知道我們人的位址大概就是國家 省 市 區 街道 樓 門牌號這樣子。那麼每一台聯網的機器在網路上也有自己的位址,他們位址是怎麼表示的呢?就是使用一串數字來表示的,例如 100.4.5.6什麼是i...

網路程式設計之Socket程式設計

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

網路程式設計之socket程式設計

大多數專案是在linux下開發伺服器端,而在windows下開發客戶端,需要經常在兩大平台之間進行切換,單獨學習一種平台沒有實踐意義。值得欣慰的是,兩大平台下的 socket 程式設計非常相似,並不會增加多少學習成本。網路程式設計就是編寫程式使兩台聯網的計算機相互交換資料。這就是socket的全部內...