python網路程式設計學習筆記(一)

2022-09-03 14:00:25 字數 3126 閱讀 7890

python網路程式設計

/*×××××××××××××××××××××××××

建立乙個能接受客戶端的訊息,

在訊息前加乙個時間戳後返回的tcp伺服器

×××××××××××××××××××××××××*/

#!/usr/bin/env python

from socket import *

from

time import ctime

host=''

port=21567

bufsiz = 1024

addr =(host, port)

tcpsersock =socket(af_inet, sock_stream)

tcpsersock.setsockopt(sol_socket, so_reuseaddr, true)

tcpsersock.setsockopt(sol_socket, so_reuseport, true)

tcpsersock.bind(addr)

tcpsersock.listen(5)

while

true:

print

'waiting for connect ...

'tcpclisock, addr =tcpsersock.accept()

print

'... connected from :

',addr

while

true:

data =tcpclisock.recv(bufsiz)

ifnot data:

break

tcpclisock.send(

'[%s] %s

'%(ctime(), data))

tcpclisock.close()

tcpsersock.close()

在進入到伺服器無限迴圈後,被動的等待連線,當有連線的時候,我們進入對話迴圈,等待客戶端傳送資料,如果訊息為空,表示客戶端已經退出,那就再去等待下乙個客戶端連線,得到客戶端訊息後,我們要在訊息前加乙個時間戳然後返回,最後一行不會被執行,放在這裡是提醒,伺服器退出的時候記得呼叫close()函式

/*×××××××××××××××××××××××××

建立乙個tcp客戶端,

程式會提示使用者輸入要傳給伺服器的資訊,

顯示伺服器返回的加了時間戳的結果

×××××××××××××××××××××××××*/

#

!/usr/bin/env python

from socket import *host= '

localhost

'port=21567bufsiz = 1024addr =(host, port)

tcpclisock =socket(af_inet, sock_stream)

tcpclisock.connect(addr)

while

true:

data = raw_input('

> ')

ifnot

data:

break

tcpclisock.send(data)

data =tcpclisock.recv(bufsiz)

ifnot

data:

break

print

data

tcpclisock.close()

客戶端有乙個無限迴圈,使用者沒有輸入或者伺服器由於某種原因退出的時候,導致函式recv()失敗,在一般情況下,客戶端會把使用者輸入的字元傳送給伺服器進行處理,然後接收並顯示伺服器傳回來的加了時間戳的字串

/*×××××××××××××××××××××××

×建立乙個udp的伺服器和客戶端

×××××××××××××××××××××××××*/

#

!/usr/bin/env python

from socket import *

from time import

ctime

host = ''

port = 21567bufsiz = 1024addr =(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()

#!/usr/bin/env python

from socket import *host = '

localhost

'port = 21567bufsiz = 1024addr =(host, port)

udpclisock =socket(af_inet, sock_dgram)

while

true:

data = raw_input('

> ')

ifnot

data:

break

udpclisock.sendto(data, addr)

data, addr =udpclisock.recvfrom(bufsiz)

ifnot

data:

break

print

data

udpclisock.close()

udp和tcp伺服器的區別,由於資料報套接字是無連線的,所以無法吧客戶端連線交給另外的套接字進行後續的通訊,這些伺服器只是接受訊息,需要的話,給客戶端返回乙個結果就可以的

udp和tcp客戶端的區別,我們不用先去和udp伺服器建立連線,而是直接把訊息發出去,等待伺服器的回覆,得到了加了時間戳的字串以後,把他顯示出來,然後再繼續其他訊息,在輸入結束後,退出迴圈,關閉套接字

Python網路程式設計學習筆記一 socket模組

coding utf 8 主要測試python網路程式設計中socket模組的使用 涉及到的技術點 套接字 面向連線的還有非面向連線套接字 tcp面向連線 udp非面向連線 1 匯入socket 2 建立socket socket三要素 1 socket family,2 socket type 3...

Python網路程式設計 學習筆記

1 為了把全世界的所有不同型別的計算機都連線起來,就必須規定一套全球通用的協議,為了實現網際網路這個目標,網際網路協議簇 internet protocol suite 就是通用協議標準。internet是由inter和net兩個單詞組合起來的,原意就是連線 網路 的網路,有了internet,任何...

學習筆記 Python網路程式設計

tcp程式設計 server 1 import socket,threading,time23 defdealclient sock,addr 4print accept new connection from s s.addr 5 sock.send b hello,i am server 給cl...