Python3-socket模块-低级网络接口

Python3中的socket模块提供了对访问套接字(socket)的接口

  socket可以理解为是一个管道,通过这个管道可以使两个不同的程序通过网络进行通信,在Python中的scoket()函数可以返回socket对象,这个对象的方法实现了不同的套接字系统调用

  服务端:

    1.使用socket()函数返回一个socket对象 sk_server

    2.将sk_server绑定到socket协议簇中的一个协议,例如: socket.AF_INET(IPv4),IPv4也是socket默认的协议

    3.开启服务监听客户端的连接请求

    4.接受连接

    5.收发数据

    6.关闭连接

  客户端:

    1.使用socket()函数返回一个socket对象 sk_client

    2.发送连接请求到 sk_server

    3.收发消息

    4.关闭连接

import socket

HOST = "127.0.0.1"    # IP地址
PORT = 55555          # 端口号
with socket.socket() as sk_server:
    sk_server.bind((HOST, PORT,))     # 将socket绑定到IP地址和端口号
    sk_server.listen(3)               # 启用服务以监听连接,参数是一个数字,表示最大连接数
    while True:
        conn, address = sk_server.accept()    # 接收一个连接,返回的是一个元组
        with conn:
            while True:
                try:
                    data = conn.recv(1024)                  # 接受这个连接发送过来的数据
                    print(str(data, "utf-8"))               # 展示数据
                    conn.send(bytes("got it!", "utf-8"))    # 向这个连接发送响应消息
                    # if not data:                          # Linux recv()无数据则为空
                    #     break
                except WindowsError as ex:                    # Windows recv()无数据则抛异常
                    # print(ex)
                    break
socket服务端

import socket

HOST = "127.0.0.1"                       # 远程地址,因为是一台机器上测试,都写的本机
PORT = 55555

while True:
    with socket.socket() as sk_client:
        sk_client.connect((HOST, PORT, ))       # 连接服务器端的socket
        cont = input(">>>")
        sk_client.send(bytes(cont, "utf-8"))    # 发送数据
        response = sk_client.recv(1024)         # 接受数据
        print(str(response, "utf-8"))
socket客户端

参考资料

  http://python.usyiyi.cn/translate/python_352/library/socket.html

posted on 2017-04-13 10:47  AustralGeek  阅读(1413)  评论(0编辑  收藏  举报

导航