mayuyu學習python很久了,今天就開始學習python的網路程式設計。
要建立套接字,就像**插口一樣,沒有它就沒有辦法進行通訊。對於套接字來說,一般分為兩種:基於檔案型和基
於網路型。套接字實質上就是乙個通訊端點。當然,我們可以建立面向連線的套接字或者面向無連線的套接字,分別
對應tcp協議和udp協議。
在網路程式設計中,都是基於c/s模式的,所以分為客戶端和服務端。接下來學習利用python編寫最簡單的socket。
先來看基於tcp的socket:
服務端
#server
from socket import*
from time import ctime
host = '222.27.174.90'
port = 21511
bufsize = 1024
addr = (host,port)
tcpsersock = socket(af_inet, sock_stream)
tcpsersock.bind(addr)
tcpsersock.listen(5)
while true:
tcpclisock, addr = tcpsersock.accept()
while true:
data = tcpclisock.recv(bufsize)
if not data:
break
print '%s' %(ctime())
print data
tcpclisock.send('[%s]\n %s' %(ctime(), data))
tcpsersock.close()
客戶端
from socket import *
host = '222.27.174.90'
port = 21511
bufsize = 1024
addr = (host, port)
tcpclisock = socket(af_inet,sock_stream)
tcpclisock.connect(addr)
while true:
data = raw_input('>')
if not data:
continue
tcpclisock.send(data)
data = tcpclisock.recv(bufsize)
print data
tcpclisock.close()
服務端和客戶端的host與port一定要相同才行。
基於udp的socket:
服務端:
#server
from socket import*
from time import ctime
host = '222.27.174.90'
port = 21512
bufsize = 1024
addr = (host,port)
udpsersock = socket(af_inet, sock_dgram)
udpsersock.bind(addr)
while true:
data, addr = udpsersock.recvfrom(bufsize)
print '%s' %(ctime())
print data
udpsersock.sendto('[%s]\n %s' %(ctime(), data), addr)
udpsersock.close()
客戶端:
from socket import *
host = '222.27.174.90'
port = 21512
bufsize = 1024
addr = (host, port)
udpclisock = socket(af_inet,sock_dgram)
while true:
data = raw_input('>')
if not data:
continue
udpclisock.sendto(data, addr)
data, addr = udpclisock.recvfrom(bufsize)
print data
udpclisock.close()
接下來學習一些套接字物件的常用函式。。。
(1)服務端套接字函式
s.bind() 繫結位址(主機名,埠)到套接字
s.listen() 開始tcp監聽
s.accept() 被動接受tcp客戶端連線,(阻塞式等待連線的到來)
(2)客戶端套接字函式
s.connect() 主動初始化tcp伺服器連線
s.connect_ex() connect)()函式的擴充套件版本,出錯時返回出錯碼,而不是丟擲異常
(3)公共用途的套接字函式
s.recv() 接收tcp資料
s.send() 傳送tcp資料
s.sendall() 完整傳送tcp資料
s.recvfrom() 接收udp資料
s.sendto() 傳送udp資料
網路初級RIP協議之我見
在討論動態路由協議前,我們不妨先聊聊靜態路由的優缺點。靜態路由的缺點 1 配置量繁瑣 2 無法針對拓撲的變化而自動變化,無法實時更新 靜態路由的優點 1 不占用裝置和鏈路資源 2 安全問題 故建議在小型網路使用靜態,大型或複雜網路使用動態路由協議 在使用動態路由協議時,盡量的控制更新量,保障安全,規...
ATL程式設計初級教程
文章 http hi.baidu.com hot blood2001 blog item fbe8f76238b61bdfe7113ad5.html 介紹 本教程的目的是告訴你如何使用atl建立乙個com伺服器,並使用visual c 和visual basic程式來分別呼叫這個伺服器。我並不想深入...
ATL程式設計初級教程
介紹 本教程的目的是告訴你如何使用atl建立乙個com伺服器,並使用visual c 和visual basic程式來分別呼叫這個伺服器。我並不想深入 com的細節,也不想讓你深陷於idl之中。這一教程只是為vc 的新手程式設計師設計的,告訴他們利用atl來建立乙個com物件有多麼簡單,並讓他們能對...