python 網路程式設計

2021-10-02 18:16:23 字數 2795 閱讀 6774

套接字(socket)是乙個抽象層,應用程式可以通過它傳送或接收資料,可對其進行像對檔案一樣的開啟、讀寫和關閉等操作。套接字允許應用程式將i/o插入到網路中,並與網路中的其他應用程式進行通訊。網路套接字是ip位址與埠的組合。

套接字可以看成是兩個網路應用程式進行通訊時,各自通訊連線中的乙個端點。通訊時,其中的乙個網路應用程式將要傳輸的一段資訊寫入它所在主機的socket中,該socket通過網路介面卡的傳輸介質將這段資訊傳送給另一台主機的socket中,使這段資訊能傳送到其他程式中。因此,兩個應用程式之間的資料傳輸要通過套接字來完成。

伺服器端

import socket

import threading

import time

#tcplink

deftcplink

(sock,addr)

:print

('accept new connection from %s:%s...'

% addr)

sock.send(b'welcome!'

)while

true

: data = sock.recv(

1024

) time.sleep(1)

ifnot data or data.decode(

'utf-8')==

'exit'

:break

sock.send(

'hello %s!'

%data.decode(

'utf-8'))

.encode(

'utf-8'

) sock.close(

)print

('connection from %s:%s closed'

%addr)

#建立socket時,af_inet指定使用ipv4協議,如果要用更先進的ipv6,就指定為af_inet6。sock_stream指定使用面向流的tcp協議

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

#繫結監聽的ip和埠號

s.bind(

('127.0.0.1'

,9999))

#用listen()方法監聽,等待連線的最大數量為5

s.listen(5)

print

('waiting for connect...'

)while

true

:#接受乙個新連線,accept()會等待並返回乙個客戶端的連線tuple(sock,(ip,埠號))

sock,addr = s.accept(

)#建立乙個執行緒來處理tcp連線

t = threading.thread(target=tcplink,args=

(sock,addr)

) t.start(

)

客戶端
import socket

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

s.connect(

('127.0.0.1'

,9999))

print

(s.recv(

1024

).decode(

'utf-8'))

for data in

[b'shea'

, b'liang'

, b'sarah']:

# 傳送資料:

s.send(data)

print

(s.recv(

1024

).decode(

'utf-8'))

s.send(b'exit'

)s.close(

)

用tcp協議進行socket程式設計在python中十分簡單,對於客戶端,要主動連線伺服器的ip和指定埠,對於伺服器,要首先監聽指定埠,然後,對每乙個新的連線,建立乙個執行緒或程序來處理。通常,伺服器程式會無限執行下去。

伺服器端

import socket

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

s.bind(

('127.0.0.1'

,9999))

print

('bind udp on 9999'

)while

true

: data,addr = s.recvfrom(

1024

)print

('received from %s:%s'

%addr)

s.sendto(b'hello, %s!'

% data, addr)

客戶端
import socket

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

for data in

[b'michael'

, b'tracy'

, b'sarah']:

# 傳送資料:

s.sendto(data,

('127.0.0.1'

,9999))

# 接收資料:

print

(s.recv(

1024

).decode(

'utf-8'))

s.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...