设为首页 收藏本站
查看: 932|回复: 0

[经验分享] Python Tcp Socket

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-12-2 09:06:31 | 显示全部楼层 |阅读模式
  socket(套接字),传输层通信的端点,由IP和端口号组成(IP,Port),可以通过socket精确地找到服务器上的进程并与之通信
python2.6实现,基于AF_INET(网络套接字)
类型SOCKET_STREAM(TCP套接字),SOCKET_DGRAM(UDP套接字)
TCP socket通信逻辑
TCP服务端:创建socket>>>绑定本地服务器>>>监听连接>>>通信交互>>>关闭连接
TCP客户端:创建socket>>>与服务器建立连接>>>通信交互>>>关闭连接
  
  Python Tcp Socket服务端
  



1     #!/usr/bin/python
2     #-*-coding:utf-8-*-
3
4     # filename : Tdpsocket.py
5     # author :
6     # create date : 2015-03-25
7     # modify date :
8     # description : tcp socket
9
10     #import stander lib
11     from socket import socket, AF_INET, SOCK_STREAM
12     import sys
13     sys.path.append( '..' )
14
15
16     class Tcpsocket():
17         '''
18         Tcpsocket类,建立tcp socket服务端,获得建立连接的配置信息
19         用法:
20             p = Tcpsocket.Tcpsocket()
21             p.listen()
22             无限循环监听端口,process重写数据处理方式
23         '''
24         
25         def __init__( self ):
26             '''
27             初始化,建立socket,ip端口绑定
28             '''
29             self.tcpServerSocket = socket( AF_INET, SOCK_STREAM ) #创建TCP socket
30             #端口号为0-65535,0-1023为系统保留,动态端口49152-65535,服务使用端口为1024-49151区间
31             self.tcpServerSocket.bind( ('127.0.0.1', 20015) )
32             self.tcpServerSocket.listen(5)
33             self.buffer_size = 1024    #缓冲区为1k
34            
35            
36         def bulidConnect( self ):
37             '''
38             建立连接,获取连接客户端的信息,接收数据
39             '''
40             tcpClientSocket, addr = self.tcpServerSocket.accept()
41             print 'conn from : ', addr
42             raw_data = tcpClientSocket.recv( int(self.buffer_size) )
43             print 'receive data : ', raw_data
44            
45             return ( tcpClientSocket, raw_data )
46            
47
48         def process( self, data ):
49             '''
50             socket传输的数据加工处理,继承重写该函数
51             '''
52             result = data
53             return result
54
55         
56         def send( self, tcp, result ):
57             '''
58             返回信息,关闭连接
59             '''
60             tcpClientSocket = tcp
61             tcpClientSocket.send( result )
62             tcpClientSocket.close()
63            
64         
65         def listen( self ):
66             '''
67             监听端口,无限循环
68             '''
69             while True:
70                 print 'wati for connect:'
71                 socket_data = self.bulidConnect()       #建立连接
72                 result = self.process( socket_data[1] ) #接收信息,处理信息
73                 self.send( socket_data[0], result )     #向客户端返回信息
74             self.close()
75         
76         
77         def close( self ):
78             '''
79             关闭连接
80             '''
81             self.tcpServerSocket.close()
82
83            
84         def __del__( self ):
85             self.close()
86
87
88     if __name__ == '__main__':
89         p = Tcpsocket()
90         p.listen()
  
  Python Tcp Socket客户端



1     import socket
2
3     sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
4     server_address = ( '127.0.0.1', 20015 )
5
6     print 'Connecting to %s:%s.' % server_address
7     sock.connect(server_address)
8
9     message = "I'm TCP client"
10     print 'Sending "%s".' % message
11
12     sock.send( '[{"url":"www.baidu.com"}]' )
13     print 'receive from server : ', sock.recv(1024)
14
15     sock.close()
16     print 'Closing socket.'
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-146121-1-1.html 上篇帖子: Python 删除列表中的重复数据 下篇帖子: liunx CentOS 升级Python版本
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表