主要包括下面的幾步:
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的全部內...