简单说说Python Socket编程步骤?

Posted 程序IT圈

tags:

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



小猿会从最基础的面试题开始,每天一题。如果参考答案不够好,或者有错误的话,麻烦大家可以在留言区给出自己的意见和讨论,大家是要一起学习的 。


废话不多说,开始今天的题目:


问:简单说说Python socket编程步骤?

答:Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。


所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的。


Python 提供了两个基本的 socket 模块。第一个是 Socket,它提供了标准的 BSD Sockets API。第二个是 SocketServer, 它提供了服务器中心类,可以简化网络服务器的开发。


下面我们分别来说说基于TCP和UDP的套接字编程步骤

创建TCP服务器示例:

1、创建socket对象

2、绑定主机和端口,应当是一个元组

3、监听

4、等待连接

5、接受数据

6、发送数据

7、关闭套接字


import socket
 
# 明确配置变量
ip_port = ('127.0.0.1',8080)
back_log = 5
buffer_size = 1024
# 创建一个TCP套接字
ser = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 套接字类型AF_INET, socket.SOCK_STREAM tcp协议,基于流式的协议
ser.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) # 对socket的配置重用ip和端口号
# 绑定端口号
ser.bind(ip_port) # 写哪个ip就要运行在哪台机器上
# 设置半连接池
ser.listen(back_log) # 最多可以连接多少个客户端
while 1:
    # 阻塞等待,创建连接
    con,address = ser.accept() # 在这个位置进行等待,监听端口号
    while 1:
        try:
            # 接受套接字的大小,怎么发就怎么收
            msg = con.recv(buffer_size)
            if msg.decode('utf-8') == '1':
                # 断开连接
                con.close()
            print('服务器收到消息',msg.decode('utf-8'))
        except Exception as e:
            break
# 关闭服务器
ser.close()


创建TCP客户端示例:

1、创建socket对象
2、连接主机,应当是一个元组
3、发送数据
4、接收数据
5、关闭

import socket
 
p = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
p.connect(('127.0.0.1',8080))
while 1:
    msg = input('please input')
    # 防止输入空消息
    if not msg:
        continue
    p.send(msg.encode('utf-8')) # 收发消息一定要二进制,记得编码
    if msg == '1':
        break
p.close()


创建UDP服务器示例:

1、创建socket套接字

2、绑定
3、接受连接
4、发送数据
5、关闭

from socket import *
 
s= socket(AF_INET, SOCK_DGRAM) # 数据报式的套接字
s.bind(('127.0.0.1', 8080))
 
while True:
    data, address = s.recvfrom(1024)
    print data, address,type(data)
    s.sendto('this is the UDP server', address)

s.close()


创建UDP客户端示例:

1、创建套接字
2、连接
3、发送数据
4、接收数据
5、关闭

 
 

至于TCP和UDP的区别是什么?

推荐大家一篇文章:

https://www.cnblogs.com/williamjie/p/9390164.html


如果对于参考答案有不认同的,大家可以在评论区指出和补充,欢迎留言!















以上是关于简单说说Python Socket编程步骤?的主要内容,如果未能解决你的问题,请参考以下文章

python,socket网络编程,最简单的server端和client端代码

python3socket编程入门

Python网络编程之socket之send和recv原理剖析

养成编程思维,可以从python开始,今天说说python注释

Python socket通信~简单实例

Python Socket 编程 简单的 Web 服务器