python網路程式設計
/*×××××××××××××××××××××××××
建立乙個能接受客戶端的訊息,
在訊息前加乙個時間戳後返回的tcp伺服器
×××××××××××××××××××××××××*/
#!/usr/bin/env pythonfrom 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:
'waiting for connect ...
'tcpclisock, addr =tcpsersock.accept()
'... 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
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:
'waiting for message...
'data, addr =udpsersock.recvfrom(bufsiz)
udpsersock.sendto(
'[%s] %s
' %(ctime(), data), addr)
'...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
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...