簡單的搭建乙個socket通訊

2021-10-25 14:07:58 字數 2432 閱讀 2590

傳輸控制協議 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通道,建立和伺服器的長鏈結 和伺服器通訊,傳送指令和接收指令等 應用退出,關閉連線。問題在這裡,和伺服器通訊,拿到乙個完整的訊息後,通過解析指令的引數,進行不同的處理,現有的 把...