最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

python网络编程常用代码

来源:动视网 责编:小采 时间:2020-11-27 14:16:35
文档

python网络编程常用代码

python网络编程常用代码:服务器端代码:# -*- coding: cp936 -*- import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#初始化socket sock.bind(("127.0.0.1", 8001))#绑定本机地址,8001端口 sock.lis
推荐度:
导读python网络编程常用代码:服务器端代码:# -*- coding: cp936 -*- import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#初始化socket sock.bind(("127.0.0.1", 8001))#绑定本机地址,8001端口 sock.lis
 服务器端代码:

# -*- 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":
 break
sock.close()

1.首先开两个IDLE,分别打开服务器端和客户器端代码。
2.F5运行服务器端代码,会出现waiting client connection...
3.F5运行客户端代码,会出现input command: ;
4.这时服务器和客户端就连接上了,可以正常的通信啦,如图:

5.再次运行服务器端代码时会出现错误,这时可以通过任务管理器,将其中的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')

加上正规表达式

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

更多python 网络编程常用代码相关文章请关注PHP中文网!

文档

python网络编程常用代码

python网络编程常用代码:服务器端代码:# -*- coding: cp936 -*- import socket sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)#初始化socket sock.bind(("127.0.0.1", 8001))#绑定本机地址,8001端口 sock.lis
推荐度:
标签: 网络 代码 源代码
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top