欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python 網(wǎng)絡編程常用代碼段

 更新時間:2016年08月28日 18:37:11   投稿:mdxy-dxy  
這篇文章主要介紹了python 網(wǎng)絡編程常用代碼段,需要的朋友可以參考下

服務器端代碼:

# -*- coding: cp936 -*-
import socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#初始化socket 
sock.bind(("127.0.0.1", 8001))#綁定本機地址,8001端口
sock.listen(5)#等待客戶連接 
while True:
  print "waiting client connection..."
  connection,address = sock.accept()#接收客戶連接請求
  print "a client have connected..."
  while True:
    try: 
      connection.settimeout(5) #設置超時時間
      buf = connection.recv(1024) #接收數(shù)據(jù)
      if buf == "1": 
        connection.send("you have send me 1!welcome to server!")
      elif buf=="2":
        connection.send("you have send me 2!I have recv!")
      elif buf=="3":
        connection.send("close the connection!")
        break
      else: 
        connection.send("unknow command!") 
    except socket.timeout: 
      print "time out" 
  connection.close()
  print "a client exit..."

客戶器端代碼:

import socket 
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
sock.connect(("127.0.0.1", 8001)) 
import time 
time.sleep(2)
while True:
  data=raw_input("input command:");
  sock.send(data)
  print sock.recv(1024)
  if data=="3":
    break
sock.close()

1.首先開兩個IDLE,分別打開服務器端和客戶器端代碼。
2.F5運行服務器端代碼,會出現(xiàn)waiting client connection...
3.F5運行客戶端代碼,會出現(xiàn)input command: ;
4.這時服務器和客戶端就連接上了,可以正常的通信啦,如圖:

5.再次運行服務器端代碼時會出現(xiàn)錯誤,這時可以通過任務管理器,將其中的pythonw.exe進程結束,重新打開,編譯就可以啦!

客戶端:

import socket
s=socket.socket()
host = socket.gethostname()
port = 1234
s.connect((host, port))
print s.recv(1024)

服務端:

import socket
s = socket.socket()
host = socket.gethostname()
port = 1234
s.bind((host, port))
 
s.listen(5)
while True:
 c, addr = s.accept()
 print 'Got connection from', addr
 c.send('Thank you for connecting')
 c.close()

http編程

from urllib import urlopen
webpage = urlopen('http://www.python.org')

加上正規(guī)表達式

import re
text = webpage.read()
m = re.search('<a href="([^"]+)" .*?>about</a>', text, re.IGNORECASE)
m.group(1)

urllib
urllib2

一個基于SocketServer的小型服務器例子:

from SocketServer import TCPServer, StreamRequestHandler
>>> class Handler(StreamRequestHandler):
	def handle(self):
		addr = self.request.getpeername()
		print 'Got connection from', addr
		self.wfile.write('Thank you for connecting')
 
>>> server = TCPServer(('',1234), Handler)
>>> server.serve_forever()

使用SocketServer進行分叉和線程處理
分叉Server:

from SocketServer import TCPServer,ForkingMinIn, StreamRequestHandler
class Server(ForkingMinIn, TCPServer):pass
class Handler(StreamRequestHandler):
 def handle(self):
  addr = self.request.getpeername()
  print 'Got connection from',addr
  self.wfile.write('Thank you for connection')
server = Server(('',1234),Handler)
server.serve_forever()

線程Server:

from SocketServer import TCPServer, ThreadingMixIn, StreamRequestHandler
class Server(ThreadingMixIn, TCPServer):pass
class Handler(StreamRequestHandler):
 def handle(self):
  addr = self.request.getpeername()
  print 'Got connection from',addr
  self.wfile.write('Thank you for connecting')
server = Server(('',1234),Handler)
server.serve_forever()

帶有select和pool的異步I/O
select服務:

import socket, select
s = socket.socket()
host = socket.gethostname()
prot = 1234
s.bind((host,port))
 
s.listen(5)
inputs = [s]
while True:
 rs,ws,es = select.select(inputs,[],[])
 for r in rs:
  if r is s:
  c, addr = s.accept()
  print 'Got connection from',addr
  inputs.append(c)
 else:
  try:
   data = r.recv(1024)
   disconnected = not data
  except socket.error:
   disconnected = True
   
  if disconnected:
   print r.getpeername(), 'disconnected'
   inputs.remove(r)
  else:
   print data

pool服務器:

import socket, select
s = socket.socket()
host = socket.gethostname()
port = 1234
s.bind((host, port))
 
fdmap = {s.fileno():s}
 
s.listen(5)
p = select.poll()
p.register(s)
while True:
 events = p.poll()
 for fd, event in events:
  if fd in fdmap:
   c, addr = s.accept()
   print 'Got connection from', addr
   p.register(c)
   fdmap[c.fileno()]=c
  elif event & select.POLLIN:
   data = fdmap[fd].recv(1024)
   if not data:
    print fdmap[fd].getpeername(),'disconnected'
    p.unregister(fd)
    del fdmap[fd]
  else:
   print data

Twisted網(wǎng)絡框架

http://www.dbjr.com.cn/article/64199.htm

相關文章

  • Python基礎 while循環(huán)與break、continue關鍵字

    Python基礎 while循環(huán)與break、continue關鍵字

    今天再帶著大家講述一下while循環(huán)。那么for循環(huán)和while循環(huán),到底有什么區(qū)別呢?下面文章就來詳細介紹,感興趣的小伙伴可以參考一下
    2021-10-10
  • python實現(xiàn)簡單溫度轉換的方法

    python實現(xiàn)簡單溫度轉換的方法

    這篇文章主要介紹了python實現(xiàn)簡單溫度轉換的方法,涉及Python操作字符串的技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • 打包Python代碼的常用方法小結

    打包Python代碼的常用方法小結

    Python是一門強大的編程語言,但在將Python代碼分享給其他人時,讓他們安裝Python解釋器并運行腳本可能有點繁瑣,這時,將Python代碼打包成可執(zhí)行的應用程序(.exe)可以大大簡化這個過程,本文將介紹幾種常用的方法,輕松地將Python代碼變成獨立的可執(zhí)行文件
    2023-11-11
  • 離線狀態(tài)下在jupyter notebook中使用plotly實例

    離線狀態(tài)下在jupyter notebook中使用plotly實例

    這篇文章主要介紹了離線狀態(tài)下在jupyter notebook中使用plotly實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python抽象基類的定義與使用方法

    Python抽象基類的定義與使用方法

    這篇文章主要介紹了Python抽象基類的定義與使用方法,Python的抽象基類是指必須讓繼承它的子類去實現(xiàn)它所要求的抽象方法的類,下面文章內容將詳細介紹相關資料,需要的朋友可以參考一下
    2021-10-10
  • Python多線程編程(五):死鎖的形成

    Python多線程編程(五):死鎖的形成

    這篇文章主要介紹了Python多線程編程(五):死鎖的形成,本文講解了死鎖的概念、死鎖示例、避免死鎖的方法等內容,需要的朋友可以參考下
    2015-04-04
  • pycharm運行程序時看不到任何結果顯示的解決

    pycharm運行程序時看不到任何結果顯示的解決

    今天小編就為大家分享一篇pycharm運行程序時看不到任何結果顯示的解決,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • python爬取豆瓣電影TOP250數(shù)據(jù)

    python爬取豆瓣電影TOP250數(shù)據(jù)

    這次以豆瓣電影TOP250網(wǎng)為例編寫一個爬蟲程序,并將爬取到的數(shù)據(jù)(排名、電影名和電影海報網(wǎng)址)存入MySQL數(shù)據(jù)庫中。
    2021-05-05
  • python中尾遞歸用法實例詳解

    python中尾遞歸用法實例詳解

    這篇文章主要介紹了python中尾遞歸用法,較為詳細的分析了尾遞歸原理與相關使用技巧,非常具有實用價值,需要的朋友可以參考下
    2015-04-04
  • python中文編碼問題小結

    python中文編碼問題小結

    這篇文章主要介紹了python中文編碼問題,是Python程序設計中比較常見的一類問題,本文以實例形式對此進行了較為詳細的總結,需要的朋友可以參考下
    2014-09-09

最新評論