串口编程 Python 、pyserial

1、串口编程 Python 、pyserial 

网址:http://www.douban.com/group/topic/7400483/

import sys,os 
import serial 
ser=serial.Serial(port='COM5',baudrate=9600,bytesize=8,parity='N',stopbits=1,timeout=5) 

str="" 
while ser.isOpen(): 
x=ser.readline(200) 
print x, 
str=str+x 

ser.close() 

2、python socket编程 UDP

网址:http://www.2cto.com/kf/201412/360043.html

server.py

import socket
 
BUF_SIZE = 1024
server_addr = ('127.0.0.1',8888)
server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
server.bind(server_addr)
while True:
     print "waiting for data"
     data,client_addr = server.recvfrom(BUF_SIZE)
     print 'Connected by ',client_addr,' Receive data : ',data
     server.sendto(data,client_addr)
server.close()

 client.py

import socket
import struct
 
BUF_SIZE = 1024
server_addr = ('127.0.0.1',8888)
client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
 
while True:
     data = raw_input("Please input some string > ")
     client.sendto(data,server_addr)
     data,addr = client.recvfrom(BUF_SIZE)
     print "Data : ",data
client.close()

 3、python网络编程之TCP通信实例和socketserver框架使用例子

1)TCP是一种面向连接的可靠地协议,在一方发送数据之前,必须在双方之间建立一个连接,建立的过程需要经过三次握手,通信完成后要拆除连接,需要经过四次握手,这是由TCP的半关闭造成的,一方在完成数据发送后要发送一个FIN来终止这个方向的连接,一个TCP连接在收到一个FIN后仍能发送数据,但应用程序很少这么做,下面是TCP连接建立和拆除的过程:


2)python可以实现TCP服务器和客户端的编程,下面是代码:

服务器端:

#!/usr/bin/env python
import socket
host="localhost"
port=10000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.bind((host,port))
s.listen(5)
while 1:
 sock,addr=s.accept()
 print "got connection form ",sock.getpeername()
 data=sock.recv(1024)
 if not data:
  break
 else:
  print data

 
 
客户端:

#!/usr/bin/env python
import socket
host="localhost"
port=10000
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.connect((host,port))
s.send("hello from client")
s.close()

 3)使用socketserver框架编写TCP服务器

    Socketserver模块可以简化网络服务器的编写,它包含了四种服务器类,TCPServer使用TCP协议,UDPServer使用UDP协议,还有两个不常使用的,即UnixStreamServer和UnixDatagramServer,这两个类仅仅在unix环境下有用。

    使用服务器编程,需要进行一下步骤,先建立一个请求句柄类,这个类继承自BaseRequestHandler类,建立这个类后重写它的handle方法,然后实例化服务器类,把主机名,端口号和句柄类传给它,然后调用server_forever()方法来处理请求。

   使用socketserver框架的服务器:

import SocketServer
host=''
port=10000
class Handler(SocketServer.StreamRequestHandler):

 def handler(self):
  addr=self.request.getpeername()
  print "got connection from",addr
  self.wfile.write("connected")

server=SocketServer.TCPServer((host,port),Handler)
server.serve_forever()

 上面的socketserver服务器只能处理一个请求,如果要处理多个请求,可以用forking或者threading实现,实现多进程或者多线程服务器。下面是使用forking和threading的服务器代码:

使用forking的服务器:

from SocketServer import TCPServer,ForkingMixIn,StreamRequestHandler
class Server(ForkingMixIn,TCPServer):pass
class Handler(StreamRequestHandler):

 def handle(self):
  addr=self.request.getpeername()
  print "got connection from",addr
  self.wfile.write('connected')

server=Server((''.10000),Handler)
server.serve_forever()

 使用多线程的服务器:

 

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("connected")

server=Server(('',10000),Handler)
server.serve_forever()

 4、python Tcp 小例子

服务端代码server.py
#coding:utf-8
import socket
import datetime
 
"""
定义基本的信息
"""
HOST = ""            #主机
PORT = 23151         #端口
ADD = (HOST, PORT)
BUFFERSIZE = 1024    #缓冲区大小
 
"""
建立socket,绑定地址和开始监听
"""
TcpSerSock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    #创建socket
TcpSerSock.bind(ADD)       #绑定地址和端口
TcpSerSock.listen(10)      #开始监听,监听数目同时间不超过10个
 
"""
socekt建好后,开始进行连接和数据的传输
"""
print "服务器等待连接......"
TcpCliSock, addr = TcpSerSock.accept()  #开始连接
while True:
    date = TcpCliSock.recv(BUFFERSIZE)   #接受数据
    if date:     #如果接受到了数据
        curTime = datetime.datetime.now()  #获得当前时间 格式是:datetime.datetime(2012, 3, 13, 1, 29, 51, 872000)
        curTime = curTime.strftime('%Y-%m-%m %H:%M:%S')     #转换格式
        print "%s  %s" % (addr, curTime) 
        print date
        #发数据
        sendDate = raw_input("input:")
        TcpCliSock.send('%s' % (sendDate))   #发数据   
        if date == '88':
            break  
     
"""
连接完毕,关闭套接字
"""
print "server close"
TcpCliSock.close()
TcpSerSock.close()
 
 
 
 
 
 
 
客户端代码 client.py
#coding:utf-8
import socket
import datetime
 
"""
定义基本的信息: 主机和端口要和服务器一致
"""
HOST = "localhost"  #服务其地址
PORT = 23151       #服务器端口
BUFFERSIZE = 1024
ADDR = (HOST, PORT)
 
"""
建立套接字,开始连接
"""
TCPClient = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
TCPClient.connect(ADDR) #连接服务器
 
"""
开始进行数据的传输
"""
while True:
    senddate = raw_input("input:")
    if senddate:
        TCPClient.send('%s' % (senddate))  #发送数据
         
    recvdate = TCPClient.recv(BUFFERSIZE)    #接受数据
    curTime = datetime.datetime.now()  #获得当前时间 格式是:datetime.datetime(2012, 3, 13, 1, 29, 51, 872000)
    curTime = curTime.strftime('%Y-%m-%m %H:%M:%S')     #转换格式
    print "%s  %s" % (HOST, curTime)
    print  recvdate
    if recvdate == '88':
            break  
     
"""
传输完毕,关闭套接字
"""
print "client close"
TCPClient.close()

 

猜你喜欢

转载自eddysoft.iteye.com/blog/2259600