Python编程要点-- socket 编程

Socket 编程

每种语言的后端底层都是基于socket编程,Python里面的大概是这样的方式:

服务器端:server.py

import socket

def handle_request(client):
    buf = client.recv(1024)
    print buf 
    client.send("Hello World!")

def main():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(("localhost", 9000))
    sock.listen(10)
    while True:
        connect, address = sock.accept()
        handle_request(connect)
        connect.close()

if __name__ == "__main__":
    main()

客户端:client.py

import socket

def client():
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.connect(("localhost", 9000))
    sock.send("I am client")
    data = sock.recv(1024)

if __name__ == "__main__":
    client()
socket 的编程思路

服务器端:

1.创建套接字,绑定套接字到本地IP与端口

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind(("localhost", 9000))

2.开始监听连接

    s.listen(5)

3.进入循环,不断接受客户端的请求

    s.accept()

4.接收传来的数据,处理并给对方发送数据

    buf = s.recv(1024)
    s.send("Hello")

5.传输完成,关闭连接

    s.close()

客户端:

1.创建套接字,连接远端地址

    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect(("localhost", 9000))

2.连接后发送数据并接收数据

    s.send("Hello")
    buf = s.recv(1024)

3.传输完毕后,关闭套接字

    s.close()

select 模块

select模块中有select,poll,epoll三种方式实现socket编程,他们都是Linux上实现的是IO多路复用技术,可以同时监听多个套接字。

select:

干货

IO多路复用 :

通过一种机制,可以监视多个描述符(socket),一旦某个描述符就绪(一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。
Linux中的 select,poll,epoll 都是IO多路复用的机制
Linux下网络I/O使用socket套接字来通信,普通I/O模型只能监听一个socket,而I/O多路复用可同时监听多个socket.
I/O多路复用避免阻塞在io上,原本为多进程或多线程来接收多个连接的消息变为单进程或单线程保存多个socket的状态后轮询处理.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值