Python Udp Socket

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服务端

 1     #!/usr/bin/python

 2     #-*-coding utf-8-*-

 3 

 4     # filename : Udpsocket.py

 5     # author :

 6     # create date : 2015-03-25

 7     # modify date :

 8     # description : udp socket

 9 

10     #import stander lib

11     from socket import socket, AF_INET, SOCK_DGRAM

12     import sys

13     sys.path.append( '..' )

14 

15 

16     class Udpsocket():

17         '''

18         Udpsocket类,建立udp socket服务端

19         用法:

20             p = Udpsocket.Udpsocket()

21             p.listen()

22             无限循环监听端口,process重写数据处理方式

23         '''

24         

25         def __init__( self ):

26             '''

27             初始化,建立socket,ip端口绑定

28             '''

29             self.udpServerSocket = socket( AF_INET, SOCK_DGRAM )

30             self.udpServerSocket.bind( ('127.0.0.1', 20015) )

31             self.buffer_size = 1024 #缓冲区为1k

32             

33             

34         def receive( self ):

35             '''

36             收取端口传来的数据

37             '''

38             raw_data, addr = self.udpServerSocket.recvfrom( int(self.buffer_size) )

39             print 'conn from : ', addr

40             print 'receive from udp client : ', raw_data

41             

42             return ( raw_data, addr )

43             

44 

45         def process( self, data ):

46             '''

47             socket传输的数据加工处理,继承重写该函数

48             '''

49             result = data

50             return result

51 

52         

53         def send( self, addr, result ):

54             '''

55             返回信息

56             '''

57             self.udpServerSocket.sendto( result, addr )

58             

59         

60         def listen( self ):

61             '''

62             监听端口,无限循环

63             '''

64             while True:

65                 print 'wait for connect'

66                 socket_data = self.receive()             #接收数据

67                 result = self.process( socket_data[0] )  #处理接收的信息

68                 self.send( socket_data[1], str(result) ) #返回数据

69             self.close()

70         

71         

72         def close( self ):

73             '''

74             关闭连接

75             '''

76             self.udpServerSocket.close()

77 

78             

79         def __del__( self ):

80             self.close()

81             

82 

83     if __name__ == '__main__':

84         p = Udpsocket()

85         p.listen()

Python Udp Socket客户端

 1     #!/usr/bin/env python

 2     #-*-coding:utf-8-*-

 3 

 4     from socket import *

 5 

 6     HOST = '127.0.0.1'       #主机

 7     PORT = 20015             #端口

 8     BUFFSIZE = 1024          #缓冲区大小

 9     ADDR = ( HOST, PORT )    #地址

10 

11     #建立socket监听

12     udpClientSocket = socket( AF_INET, SOCK_DGRAM )

13 

14     #传送接收数据

15     udpClientSocket.sendto( 'hello', ADDR )

16     data, addr = udpClientSocket.recvfrom( BUFFSIZE )

17     print 'receive data : ', data

18     #data, addr = udpClientSocket.recvfrom( BUFFSIZE )

19     udpClientSocket.close()

 

你可能感兴趣的:(python)