国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python 網絡編程常用代碼段

2019-11-25 16:35:41
字體:
來源:轉載
供稿:網友

服務器端代碼:

# -*- 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) #接收數據      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":    breaksock.close()

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

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

客戶端:

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

服務端:

import sockets = socket.socket()host = socket.gethostname()port = 1234s.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 urlopenwebpage = urlopen('http://www.python.org')

加上正規表達式

import retext = 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, StreamRequestHandlerclass Server(ForkingMinIn, TCPServer):passclass 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, StreamRequestHandlerclass Server(ThreadingMixIn, TCPServer):passclass 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, selects = socket.socket()host = socket.gethostname()prot = 1234s.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, selects = socket.socket()host = socket.gethostname()port = 1234s.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網絡框架

//m.survivalescaperooms.com/article/64199.htm

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 吐鲁番市| 郴州市| 搜索| 哈巴河县| 岳池县| 南昌县| 大渡口区| 吉林市| 新兴县| 木里| 西宁市| 普洱| 南和县| 泗阳县| 平阳县| 寻乌县| 淮北市| 库伦旗| 耿马| 绥芬河市| 武清区| 遂平县| 城步| 临湘市| 昔阳县| 桑植县| 五指山市| 华亭县| 平定县| 莆田市| 洛川县| 富锦市| 吴江市| 昌江| 罗山县| 商都县| 峡江县| 河南省| 乃东县| 乌苏市| 汾阳市|