基於TCP協議的socket程式設計

2022-02-26 21:31:32 字數 2419 閱讀 8529

什麼是socket

socket是應用層與tcp/ip協議族通訊的中間軟體抽象層,它是一組介面。在設計模式中,socket其實就是乙個門面模式,它把複雜的tcp/ip協議族隱藏在socket介面後面,對使用者來說,一組簡單的介面就是全部,讓socket去組織資料,以符合指定的協議。

所以,我們無需深入理解tcp/udp協議,socket已經為我們封裝好了,我們只需要遵循socket的規定去程式設計,寫出的程式自然就是遵循tcp/udp標準的。

也有人將socket說成ip+port,ip是用來標識網際網路中的一台主機的位置,而port是用來標識這台機器上的乙個應用程式,ip位址是配置到網絡卡上的,而port是應用程式開啟的,ip與port的繫結就標識了網際網路中獨一無二的乙個應用程式 而程式的pid是同一臺機器上不同程序或者執行緒的標識。

tcp協議的特點:

1.可靠傳輸。資料從本地傳送出去之後,本地內的快取資料不會清空,只有當服務端收到客戶端的應答後,才清除快取,否則,在規定的時間內則重新傳送資料。tcp提供超時重發,丟棄重複資料,檢驗資料,流量控制等功能,保證資料能從一端傳到另一端。 

2.位元組流協議。

3。面向連線。在資料進行傳輸之前,服務端與客戶端必須建立乙個雙向的連線後,方能傳輸資料,因此是面向連線服務。

基於網路型別的套接字家族

套接字家族的名字:af_inet

(還有af_inet6被用於ipv6,還有一些其他的位址家族,不過,他們要麼是只用於某個平台,要麼就是已經被廢棄,或者是很少被使用,或者是根本沒有實現,所有位址家族中,af_inet是使用最廣泛的乙個,python支援很多種位址家族,但是由於我們只關心網路程式設計,所以大部分時候我麼只使用af_inet)

**示例:

服務端

import

socket

import

osimport

pickle

#建立乙個socket物件

s =socket.socket(socket.af_inet,socket.sock_stream)

#s.setsockopt(socket.sol_socket,socket.so_reuseaddr,1)

#繫結服務端程式的ip位址和埠號

s.bind(('

127.0.0.1

',7895))

#開始tcp監聽

s.listen(5)#

設定半連線池的大小

#被動接受tcp客戶的連線,等待連線的到來

while

true:

con, add =s.accept()

#print('等待客戶端接入')

#列印客戶端的連線資訊

print

(add)

while

true:

try:

#接收客戶端傳送的資料

data = int(con.recv(1024))

print

(data)

#列印資料

if data == 1:

res = os.listdir(os.chdir('

c:\\'))

#將列表轉換為二進位制

res =pickle.dumps(res)

con.send(res)

elif data == 2:

res =os.getcwd()

res =pickle.dumps(res)

con.send(res)

except

exception:

break

con.close()

s.close()

import

socket

import

pickle

#from socket import *

s =socket.socket(socket.af_inet,socket.sock_stream)

s.connect((

'127.0.0.1

',7895))

msg = '''

請輸入操作序號:

1.列印c盤根目錄下的檔案

2.列印當前路徑

'''print

(msg)

while

true:

str = input('

>>>:')

#若輸入為空,則重新輸入

ifnot str:continue

s.send(str.encode(

'utf-8'))

data = s.recv(1024)

#反序列化

res =pickle.loads(data)

print

(res)

s.close()

基於tcp協議的socket

serve服務端 import socket sk socket.socket 例項物件 sk.bind 127.0.0.1 8080 集合內設定ip和埠,利用bind方法 sk.listen 監聽資訊 conn,addr sk.accept 接受到資訊 while true ret conn.re...

基於TCP協議的socket通訊

一 伺服器端 1 建立serversocket,即伺服器端的socket,繫結指定的埠,並偵聽此埠 serversocket server new serversocket 8888 2 呼叫accept 方法,開始偵聽,等待客戶端的連線,在未連線成功之前,處於阻塞狀態,返回的socket,用於與客...

基於TCP協議下的socket程式設計

socket tcp ip協議中乙個埠號和乙個ip位址繫結在一起就生成乙個socket就表示了網路中唯一的乙個程序,它是全雙工的工作方式。基於tcp的socket程式設計 函式的使用 1 socket include see notes include int socket int domain,i...