python network programming common codes

高洛峰
Release: 2017-02-27 16:59:22
Original
1280 people have browsed it

Server-side code:

# -*- 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..."
Copy after login

Client-side code:

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()
Copy after login

1. First open two IDLEs and open the server-side and client-side codes respectively.
2.F5 runs the server-side code, and waiting client connection will appear...
3.F5 runs the client-side code, and input command: appears;
4.At this time, the server and client are connected. Now, normal communication is possible, as shown in the figure:

python 网络编程常用代码

5. An error will occur when running the server-side code again. At this time, you can use the task manager to change the pythonw After the .exe process ends, reopen it and compile it!

Client:

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

Server:

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()
Copy after login

http programming

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

plus regular expression

import re
text = webpage.read()
m = re.search(&#39;<a href="([^"]+)" .*?>about</a>&#39;, text, re.IGNORECASE)
m.group(1)
Copy after login

urllib
urllib2

An example of a small server based on SocketServer:

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

Using SocketServer for forking and threading
Forking Server:

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

Thread Server:

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

Asynchronous I/O with select and pool
select service:

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 &#39;Got connection from&#39;,addr
  inputs.append(c)
 else:
  try:
   data = r.recv(1024)
   disconnected = not data
  except socket.error:
   disconnected = True
   
  if disconnected:
   print r.getpeername(), &#39;disconnected&#39;
   inputs.remove(r)
  else:
   print data
Copy after login

pool server:

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 &#39;Got connection from&#39;, addr
   p.register(c)
   fdmap[c.fileno()]=c
  elif event & select.POLLIN:
   data = fdmap[fd].recv(1024)
   if not data:
    print fdmap[fd].getpeername(),&#39;disconnected&#39;
    p.unregister(fd)
    del fdmap[fd]
  else:
   print data
Copy after login


For more articles related to python network programming common codes, please pay attention to the PHP Chinese website!


Related labels:
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template