網路程式設計 Python網路程式設計詳解socket

2021-08-29 18:31:26 字數 4303 閱讀 5100

1、伺服器就是一系列硬體或軟體,為乙個或多個客戶端(服務的使用者)提供所需的「服務」。它存在唯一目的就是等待客戶端的請求,並響應它們(提供服務),然後等待更多請求。

2、客戶端/伺服器架構既可以應用於計算機硬體,也可以應用於計算機軟體。

3、在伺服器響應客戶端之前,首先會建立乙個通訊節點,它能夠使伺服器監聽請求。

一、套接字:通訊端點

1、套接字

套接字是計算機網路資料結構,它體現了上節中所描述的「通訊端點」的概念。在任何型別的通訊開始之前,網路應用程式必須建立套接字。

有兩種型別的套接字:基於檔案和面向網路的。

如果乙個套接字像乙個**插孔-允許通訊的一些基礎設施,那麼主機名和埠號就像區號和**號碼的組合。有效的埠號範圍為0-65535(小於1024的埠號預留給了系統)

3、面向連線的套接字和與無連線的套接字

面向連線,在進行通訊之前必須建立乙個連線。實現這種連線型別主要協議是tcp(傳輸控制協議)

無連線,在通訊之前並不需要建立連線。主要協議是udp(使用者資料報協議)

二、python中的網路程式設計

1、socket()模組函式

為建立tcp/ip套接字:tcpsock = socket.socket(socket.af_inef,socket.sock_stream)

建立udp/ip套接字:udpsock = socket.socket(socket.af_inet,socket.sock_dgram)

3、建立tcp伺服器

1234

5678

9101112

1314

1516

1718

1920

2122

2324

2526

2728

2930

3132

ss = socket()  #建立伺服器套接字

ss.bind()      #套接字與位址繫結

ss.listen()      #監聽連線

inf_loop:       #伺服器無限迴圈

cs = ss.accept()     #接收客戶端連線

comm_loop:        #通訊迴圈

cs.recv()/cs.send()  #對話(接收、傳送)

cs.close()       #關閉客戶端套接字

ss.close()        #關閉伺服器套接字(可選)

#!/usr/bin/env python

#tcp時間戳伺服器

from socket import *

from time import ctime

host = ''

port = 

21567

bufsiz = 

1024

addr = (host,port)

tcpsersock = socket(af_inet,sock_stream)

tcpsersock.bind(addr)

tcpsersock.listen(5)

while

true:

print(

'waiting for connecting...'

)tcpclisock, addr = tcpsersock.accept()

print(

'...connected from:'

,addr)

while true:

data = tcpclisock.recv(bufsiz)

if not

data:

break

tcpclisock.send(

'[%s] %s'

% (bytes(ctime(),

'utf-8'

),data))

tcpclisock.close()

tcpsersock.close()

4、建立tcp客戶端

12345

cs = socket()

cs.connect()

comm_loop:

cs.send()/cs.recv()

cs.close()12

3456

78910

1112

1314

1516

1718

19#!/usr/bin/env python

#tcp時間戳客戶端

from socket import *

host = '127.0.0.1'

port = 

21567

bufsiz = 

1024

addr = (host,port)

tcpclisock = socket(af_inet,sock_stream)

tcpclisock.connect(addr)

while

true:

data = input(

'> '

)if 

notdata:

break

tcpclisock.send(data)

data = tcpclisock.recv(bufsiz)

if not

data:

break

print(data.decode(

'utf-8'

))tcpclisock.close()

5、建立udp伺服器

12345

ss = socket()

ss.bind()

inf_loop:

cs = ss.recvfrom()/ss.sendto()

ss.close()12

3456

78910

1112

1314

1516

#!/usr/bin/env python

#udp時間戳伺服器

from socket import *

from time import ctime

host = ''

port = 

21567

bufsiz = 

1024

addr = (host,port)

udpsersock = socket(af_inet,sock_dgram)

udpsersock.bind(addr)

while

true:

print(

'waiting for message...'

)data, addr=udpsersock.recvfrom(bufsiz)

udpsersock.sendto(

'[%s] %s'

% (ctime(),data),addr)

print(

'...received from and returned to:'

,addr)

udpsersock.close()

6、建立udp客戶端

1234cs = socket()

comm_loop:

cs.send()/cs.recvfrom()

cs.close()12

3456

78910

1112

1314

1516

1718

#!/usr/bin/env python

#udp時間戳客戶端

from socket import *

host = 'localhost'

port = 

21567

bufsiz = 

1024

addr = (host,port)

udpclisock = socket(af_inet,sock_dgram)

while

true:

data = input(

'> '

)if 

notdata:

break

udpclisock.sendto(data,addr)

data, addr=udpclisock.recvfrom(bufsiz)

if not

data:

break

print(data)

udpclisock.close()

python網路程式設計 TCP網路程式設計

tcp程式設計 客戶端 import socket 1 套接字 tcp socket socket.socket socket.af inet,socket.sock stream 2 建立鏈結 tcp socket.connect 172.27.35.1 8080 3 傳送資訊 tcp socke...

python 網路程式設計

今天晚上學習了一下python的網路程式設計,實現了client向server傳送資料,server反饋資訊 python 3.3 版本 server from socket import class tcpserver object def init self,serverport self.se...

python網路程式設計

網路通訊是計算機之間的程序之間的通訊。tcp程式設計 tcp連線建立是雙向通道,客戶端與服務端都可以給對方傳送資料。建立tcp連線時,主動發起連線的叫客戶端,被動響應連線的叫服務端。建立乙個tcp的socket連線 用socket family,type 建立套接字獲得socket物件。family...