socket(套接字),传输层通信的端点,由IP和端口号组成(IP,Port),可以通过socket精确地找到服务器上的进程并与之通信

python2.6实现,基于AF_INET(网络套接字)
类型SOCKET_STREAM(TCP套接字),SOCKET_DGRAM(UDP套接字)

UDP socket实现较TCP要简单,没有建立连接的过程,服务端无限循环接收数据,处理数据返回,客户端也无需建立通信连接,
直接发送数据接收数据即可

UDP socket通信逻辑
UDP服务端:创建socket>>>绑定本地服务器>>>无限循环>>>接收信息返回信息
UDP客户端:创建socket>>>发送信息接收信息

Python Udp Socket服务端

     #!/usr/bin/python
#-*-coding utf-8-*- # filename : Udpsocket.py
# author :
# create date : 2015-03-25
# modify date :
# description : udp socket #import stander lib
from socket import socket, AF_INET, SOCK_DGRAM
import sys
sys.path.append( '..' ) class Udpsocket():
'''
Udpsocket类,建立udp socket服务端
用法:
p = Udpsocket.Udpsocket()
p.listen()
无限循环监听端口,process重写数据处理方式
''' def __init__( self ):
'''
初始化,建立socket,ip端口绑定
'''
self.udpServerSocket = socket( AF_INET, SOCK_DGRAM )
self.udpServerSocket.bind( ('127.0.0.1', 20015) )
self.buffer_size = 1024 #缓冲区为1k def receive( self ):
'''
收取端口传来的数据
'''
raw_data, addr = self.udpServerSocket.recvfrom( int(self.buffer_size) )
print 'conn from : ', addr
print 'receive from udp client : ', raw_data return ( raw_data, addr ) def process( self, data ):
'''
socket传输的数据加工处理,继承重写该函数
'''
result = data
return result def send( self, addr, result ):
'''
返回信息
'''
self.udpServerSocket.sendto( result, addr ) def listen( self ):
'''
监听端口,无限循环
'''
while True:
print 'wait for connect'
socket_data = self.receive() #接收数据
result = self.process( socket_data[0] ) #处理接收的信息
self.send( socket_data[1], str(result) ) #返回数据
self.close() def close( self ):
'''
关闭连接
'''
self.udpServerSocket.close() def __del__( self ):
self.close() if __name__ == '__main__':
p = Udpsocket()
p.listen()

Python Udp Socket客户端

     #!/usr/bin/env python
#-*-coding:utf-8-*- from socket import * HOST = '127.0.0.1' #主机
PORT = 20015 #端口
BUFFSIZE = 1024 #缓冲区大小
ADDR = ( HOST, PORT ) #地址 #建立socket监听
udpClientSocket = socket( AF_INET, SOCK_DGRAM ) #传送接收数据
udpClientSocket.sendto( 'hello', ADDR )
data, addr = udpClientSocket.recvfrom( BUFFSIZE )
print 'receive data : ', data
#data, addr = udpClientSocket.recvfrom( BUFFSIZE )
udpClientSocket.close()

Python Udp Socket的更多相关文章

  1. python udp socket通信

    前段时间学习了一下c++的socket通信,但发现那玩意儿比较复杂还是转向python了,下面就是一个简单的udpsocket通信程序,欢迎大佬前来指正 udp聊天 import socket # 创 ...

  2. 老李分享:使用 Python 的 Socket 模块开发 UDP 扫描工具

    老李分享:使用 Python 的 Socket 模块开发 UDP 扫描工具 poptest是业内唯一的测试开发工程师培训机构,测试开发工程师主要是为测试服务开发测试工具,在工作中要求你做网络级别的安全 ...

  3. 使用 Python 的 Socket 模块构建一个 UDP 扫描工具

    译文:oschina 英文:bt3gl 当涉及到对一些目标网络的侦察时,出发点无疑是首先发现宿主主机.这个任务还可能包含嗅探和解析网络中数据包的能力. 几周前,我曾经谈到了如何使用Wireshark来 ...

  4. python的socket编程之udp编程

    在上篇文章中,仅仅讲述了如何进行了TCP编程,在本章中,将讲述使用udp进行编码,先看如下的代码,服务器端: root@python 513]# cat serverudp.py #!/usr/bin ...

  5. Python基于socket模块实现UDP通信功能示例

    Python基于socket模块实现UDP通信功能示例 本文实例讲述了Python基于socket模块实现UDP通信功能.分享给大家供大家参考,具体如下: 一 代码 1.接收端     import ...

  6. python之socket

    一.初识socket      socket 是网络连接端点,每个socket都被绑定到一个特定的IP地址和端口.IP地址是一个由4个数组成的序列,这4个数均是范围 0~255中的值(例如,     ...

  7. Python底层socket库

    Python底层socket库将Unix关于网络通信的系统调用对象化处理,是底层函数的高级封装,socket()函数返回一个套接字,它的方法实现了各种套接字系统调用.read与write与Python ...

  8. Python UDP broadcast PermissionError: [Errno 13] Permission denied

    /********************************************************************** * Python UDP broadcast Permi ...

  9. android firmware 利用UDP socket发送Magic Packet--python版本

    android firmware 利用UDP socket发送Magic Packet--python版本 #!/usr/bin/python import sys, time from struct ...

随机推荐

  1. Android 之形状Drawable

    形状Drawable资源允许使用 <shape>标记指定基本形状的尺寸.背景.轮廓线,从而定义这些基本形状. 每个形状都包含一个类型(通过shape属性指定).定义该形状尺寸的属性,以及指 ...

  2. Tomcat类加载器

    1JVM类加载机制   JVM的ClassLoader通过Parent属性定义父子关系,可以形成树状结构.其中引导类.扩展类.系统类三个加载器是JVM内置的. 它们的作用分别是: 1)引导类加载器:使 ...

  3. java笔记5之逻辑运算符以及&&与&的区别

    1 &逻辑与:有false则false.         |逻辑或:有true则true.         ^逻辑异或:相同为false,不同为true.            举例:情侣关系 ...

  4. windows server2012域服务器降级的方法

    最近在一个新的网络环境里建立windows域服务器,准备建立主.备两台域服务器.在一台新服务器上面安装了windows2012R2并配置了DC服务.域和林的级别设置为Windows2012R2级别.在 ...

  5. poj 1089 Intervals

    http://poj.org/problem?id=1089 Intervals Time Limit: 1000MS   Memory Limit: 10000K Total Submissions ...

  6. 企业版IDP的申请及“In House”发布

    企业版IDP,即iOS Development Enterprise Program.注意是$299/Year那种,并不是$99/Year的那种. 这种方式的IDP其最大的好处在于:可以发布“In H ...

  7. 50个Android开发技巧(10 为TextView加入样式)

    首先来看一个控件的例子: (原文地址:http://blog.csdn.net/vector_yi/article/details/24428085) 手机上类似这种场景你一定已经见过非常多次了,但有 ...

  8. Nuget找不到服务器

    Nuget的新地址 http://nuget-prod-v2gallery.trafficmanager.net/api/v2/

  9. FoxOne---一个快速高效的BS框架--(2)

    FoxOne---一个快速高效的BS框架--(1) FoxOne---一个快速高效的BS框架--(2) FoxOne---一个快速高效的BS框架--(3) FoxOne---一个快速高效的BS框架-- ...

  10. NumberSpinner( 数字微调) 组件

    本节课重点了解 EasyUI 中 Spinner(微调)组件的使用方法,这个组件依赖于Numberbox(数值输入框)和 Spinner(微调)组件. 一. 加载方式//class 加载方式<i ...