socket 网络编程

Posted Captain

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了socket 网络编程相关的知识,希望对你有一定的参考价值。

Python 提供了两个级别访问的网络服务:

  低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的全部方法

  高级别的网络服务模块 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发

socket()函数:

Python 中,我们用 socket()函数来创建套接字,语法格式如下:

socket.socket([family[, type[, proto]]])
  • family: 套接字家族可以使AF_UNIX或者AF_INET
  • type: 套接字类型可以根据是面向连接的还是非连接分为SOCK_STREAM(for TCP)SOCK_DGRAM(for UDP)
  • protocol: 一般不填默认为0
sk = socket.socket(socket.AF_INET,socket.SOCK_STREAM,0)

其它socket对象内建方法可参考:

http://www.runoob.com/python/python-socket.html

https://docs.python.org/2/library/socketserver.html

示例:使用SocketServer实现中国移动客服接电话逻辑(异步多线程)

server.py

技术分享图片
 1 # !/usr/bin/python
 2 # -*- coding:utf-8 -*-
 3 ‘‘‘
 4 _author_=Captain
 5 ‘‘‘
 6 
 7 import SocketServer
 8 
 9 class Myserver(SocketServer.BaseRequestHandler):
10     def setup(self):
11         pass
12     def handle(self):
13         print self.request,self.client_address,self.server
14         conn=self.request
15         conn.sendall(欢迎致电 10086,请输入1xxx,0转人工服务.)
16         Flag = True
17         while Flag:
18             data = conn.recv(1024)
19             if data == exit:
20                 Flag = False
21             elif data == 0:
22                 conn.sendall(通过可能会被录音.balabala一大推)
23             else:
24                 conn.sendall(请重新输入.)
25     def finish(self):
26         pass
27 if __name__ == __main__:
28     server=SocketServer.ThreadingTCPServer((127.0.0.1,9999),Myserver)
29     server.serve_forever()
View Code

client.py

技术分享图片
 1 # !/usr/bin/python
 2 # -*- coding:utf-8 -*-
 3 ‘‘‘
 4 _author_=Captain
 5 ‘‘‘
 6 
 7 import socket
 8 
 9 ip_port=(127.0.0.1,9999)
10 conn = socket.socket()
11 conn.connect(ip_port)
12 while True:
13     print conn.recv(1024)  #输出接收到的数据
14     inp=raw_input("data:")
15     conn.sendall(inp)
16     if inp == exit:
17         break
18 
19 conn.close()
View Code

 


以上是关于socket 网络编程的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段——JS中的面向对象编程

VSCode自定义代码片段9——JS中的面向对象编程

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

Python--网络编程-----socket代码实例