python网络编程爬虫_Python爬虫--网络编程
Python 網絡編程
Python提供兩個基本的Socket模塊:
Socket,提供了標準的BSD Sockets API
SocketServer, 提供了服務器中心類,可以簡化網絡服務器的開發(fā)
1、Socket類型
套接字格式為: socket(family, type[,protocall]),使用給定的地址族、套接字類型、協議類型(默認為0)創(chuàng)建套接字。
2、Socket函數
TCP編程
服務端
創(chuàng)建Socket,綁定Socket到本地IP和端口
開始監(jiān)聽連接
進入循環(huán),不斷接收客戶端的連接請求
接收傳來的數據,并發(fā)送給對方數據、
傳輸完畢后,關閉Socket
# coding=utf8
"""
1. 創(chuàng)建Socket,綁定Socket到本地IP和端口
2. 開始監(jiān)聽連接
3. 進入循環(huán),不斷接收客戶端的連接請求
4. 接收傳來的數據,并發(fā)送給對方數據
5. 傳輸完畢后,關閉Socket
"""
import socket
import threading
import time
def dealClient(sock, addr):
# 4. 接收傳來的數據,并發(fā)送給對方數據
print 'Accept new connection from %s:%s...' % addr
sock.send(b'Hello, I am server!')
while True:
data = sock.recv(1024)
time.sleep(1)
if not data or data.decode('utf-8') == 'exit':
break
print '-->>%s!' % data.decode('utf-8')
sock.send('Loop_Msg: %s!' % data.decode('utf-8').encode('utf-8'))
# 5. 傳輸完畢后,關閉Socket
sock.close()
print 'Connection from %s:%s closed.' % addr
if __name__ == '__main__':
# 1. 創(chuàng)建Socket,綁定Socket到本地IP和端口
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('127.0.0.1',9999))
# 2. 開始監(jiān)聽連接
s.listen(5) # listen(n)傳入的值, n表示的是服務器拒絕(超過限制數量的)連接之前,操作系統(tǒng)可以掛起的最大連接數量。n也可以看作是"排隊的數量"
print 'Waiting for connection...'
# 3. 進入循環(huán),不斷接收客戶端的連接請求
while True:
sock, addr = s.accept()
t = threading.Thread(target=dealClient, args=(sock, addr))
t.start()
客戶端
創(chuàng)建Socket,連接遠端地址
連接后發(fā)送數據和接收數據
傳輸完畢后,關閉Socket
# coding=utf8
"""
1. 創(chuàng)建Socket,連接遠端地址
2. 連接后發(fā)送數據和接收數據
3. 傳輸完畢后,關閉Socket
"""
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')
s.send(b'Hello I am a client')
print '-->>'+s.recv(1024).decode('utf-8')
s.send(b'exit')
s.close()
UDP 編程
服務端
創(chuàng)建Socket,綁定指定的IP和端口
直接發(fā)送數據和接收數據
關閉Socket
# coding=utf8
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)
客戶端
與TCP不同,UDP客戶端不需要建立連接,創(chuàng)建Socket后可以直接后服務端進行數據交換
# coding=utf8
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
for data in [b'Hello',b'World']:
s.sendto(data,('127.0.0.1',9999))
print s.recv(1024).decode('utf-8')
s.close()
總結
以上是生活随笔為你收集整理的python网络编程爬虫_Python爬虫--网络编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 耦合式是什么意思_高内聚 ,低耦合 到底
- 下一篇: a5松下驱动器参数设置表_松下伺服几个参