什麼是socket?
socket是乙個模組,又稱套接字,用來封裝網際網路協議(應用層以下的層)。
為什麼要有socket?
socket可以實現 網際網路協議 應用層以下的層的工作
-提高開發效率
怎麼使用socket?
import socket
寫socket套接字:
#服務端
import
socket
#獲取手機
server =socket.socket()
#繫結ip位址,port埠
server.bind(('
127.0.0.1
',8500))
#半連線池
server.listen(5)#
最多5個人坐椅子,實際上==6
print('
server is running')
while
true:
#conn為通道 ,等待**的接入
conn,addr =server.accept()
(addr)
while
true:
try:
#接聽對方假話的內容
#data客戶端傳送過來的訊息
date = conn.recv(1024)
print(date.decode('
utf-8'))
if len(date) ==0:
break
if date.decode('
utf-8
') == 'q'
:
break
send_date = input("
服務端》:")
#服務端往客戶端傳送訊息
conn.send(send_date.encode('
utf-8'))
except
exception as e:
(e)
break
client.py1)問題:無法確認對方傳送過來資料的大小。#客戶端
import
socket
#買手機
client =socket.socket()
#撥號 connect為連線
client.connect(('
127.0.0.1
',8500))#
客戶端的ip與port必須與服務端一致
print('
client is running')
while
true:
send_date = input("
客戶端》:")
#必須傳送bytes型別的資料
client.send(send_date.encode('
utf-8'))
#接受date的資料
date = client.recv(1024)
if date.decode('
utf-8
') == 'q'
:
break
if len(date) ==0:
break
print(date.decode('
utf-8'))
client.close()
2)問題:在傳送資料間隔短並且資料量小的情況下,
會將所有資料一次性傳送
確認:確認對方資料的大小
-無論哪一端先傳送資料
-客戶端
1)先製作報頭,並傳送(struct)
2)傳送真實資料
-服務端:
1)接受報頭,並解包獲取 真實資料長度
2)根據真實資料長度 接受真實資料
recv(真實資料長度)
socket 套接字通訊
要通過internet進行通訊,至少需要一對套接字,其中乙個執行在客戶端,稱之為clientsocket,另乙個執行於伺服器端面,稱為serversocket。根據連線啟動的方式以及本地要連線的目標,套接字之間的連線過程可以分為三個步驟 伺服器監聽 客戶端請求 連線確認。伺服器監聽是指服務端套接字並...
利用Socket套接字通訊
我只寫了服務端程式。服務端會了,客服端就好寫了。我的伺服器功能是個小計算器。server.c socket 實現通訊。客服端輸入表示式經過伺服器計算出結果發給客服端 伺服器端建立任務 監聽客戶端,收到資料,發給服務端的子程序讓子程式,子程式呼叫execlp bc命令計算出結果給父程序,父程序傳給伺服...
java通訊 套接字Socket
無論用什麼語言開發,socket都是繞不過去的乙個環節,若以簡單論,除了檔案操作,程序間通過socket通訊還是比較方便的。對於主機a和b,若a主機想向b主機傳送資訊,那麼基本步驟如下 1.首先確保b主機上socket服務端開啟,服務端會監聽本機上的乙個埠,例如8080。socket服務端會以阻塞形...