傳輸控制協議 tcp 是 tcp/ip 協議棧中的傳輸層協議,它通過序列確認以及包重發機制,提供可靠bai的資料流傳送和到應用程式的虛擬連線服務。與 ip 協議相結合, tcp 組成了網際網路協議的核心。
(1)首先需要通訊雙方建立連線
(2)然後彼此可以進行資料傳輸
(3)資料傳輸結束後就關閉連線
(1)基於流的方式;
(2)面向連線;
(3)可靠通訊方式;
(4)在網路狀況不佳的時候盡量降低系統由於重傳帶來的頻寬開銷;
(5)通訊連線維護是面向通訊的兩個端點的,而不考慮中間網段和節點。
#coding:utf-8
from socket import
*from time import ctime
print
("*****************tcp服務端*****************");
host =
'127.0.0.1'
#主機號為空白表示可以使用任何可用的位址。
port =
21567
#埠號bufsiz =
1024
#接收資料緩衝大小
addr =
(host, port)
# 引數介紹:af_inet 代表ipv4型別, sock_stream代表tcp傳輸協議型別 ,af_inet6代表ipv6
tcpsersock = socket(af_inet, sock_stream)
#建立tcp伺服器套接字
tcpsersock.bind(addr)
#套接字與位址繫結
tcpsersock.listen(5)
#監聽連線,同時連線請求的最大數目
while
true
:print
('等待客戶端的連線...'
) tcpclisock, addr = tcpsersock.accept(
)#接收客戶端連線請求
print
('取得連線:'
, addr)
while
true
: data = tcpclisock.recv(bufsiz)
#連續接收指定位元組的資料,接收到的是位元組陣列
ifnot data:
#如果資料空白,則表示客戶端退出,所以退出接收
break
tcpclisock.send(
bytes
('[%s] %s'
%(ctime(
), data.decode(
'utf-8'))
,'utf-8'))
#向客戶端傳送時間戳資料,傳送位元組陣列
tcpclisock.close(
)#關閉與客戶端的連線
tcpsersock.close(
)#關閉伺服器socket
#coding:utf-8
from socket import
*print
("*****************tcp客戶端*****************");
host =
'127.0.0.1'
#伺服器ip位址,等價於localhost
port =
21567
#通訊埠號
bufsiz =
1024
#接收資料緩衝大小,1024是可接收的最大位元組數
addr =
(host, port)
tcpclisock = socket(af_inet, sock_stream)
#建立客戶端套接字
tcpclisock.connect(addr)
#發起tcp連線
while
true
: data =
input
('> '
)#接收使用者輸入
ifnot data:
#如果使用者輸入為空,直接回車就會傳送"",""就是代表false
break
tcpclisock.send(data)
#客戶端傳送訊息
data = tcpclisock.recv(bufsiz)
#接收回應訊息,接收到的是位元組陣列
ifnot data:
#如果接收伺服器資訊失敗,或沒有訊息回應,進行下一次接收
break
print
(data)
#列印回應訊息
tcpclisock.close(
)#關閉客戶端socket
乙個簡單的Socket通訊例子
睡眠一段時間再傳送訊息 sleep start private static void sleep catch interruptedexception e public class server catch ioexception e public void start private void ...
非同步Socket通訊的乙個簡單示例
最近要抓緊時間做talk!專案,看到網上有個簡單非同步通訊的例子,可惜是用vb寫的,我把它用c 改寫了一遍,加了點小功能。語言 c 軟體 vs.2003 傳送端 private void button1 click object sender,system.eventargs e 接受端 publi...
乙個Socket通訊案例
公司產品客戶端需要通過socket和c 後台互動,大概是這麼乙個流程 通過配置檔案,解析伺服器的位址和埠 開啟socket通道,建立和伺服器的長鏈結 和伺服器通訊,傳送指令和接收指令等 應用退出,關閉連線。問題在這裡,和伺服器通訊,拿到乙個完整的訊息後,通過解析指令的引數,進行不同的處理,現有的 把...