python全栈第二十天 网络编程

网络编程

ip地址

端口和端口号

Tcp的介绍

socket的介绍

import socket

if __name__ == '__main__':
    # 创建tcp客户端套接字
    # AF_INET: ipv4地址类型
    # SOCK_STREAM: tcp传输协议类型
    socket_client_sub = socket.socket(family=socket.AF_INET, type=socket.SOCK_STREAM)
    # 和服务端套接字建立连接
    socket_client_sub.connect(("192.168.98.1", 8080))
    # 编写数据
    send_content = "hello, i`m client!!"
    # 对字符串进程编码成为二进制数据
    send_data = send_content.encode()
    # 发送数据到服务端
    socket_client_sub.send(send_data)
    # 接收服务端的数据
    re_data = socket_client_sub.recv(1024)
    print(re_data.decode())
    # 关闭套接字
    socket_client_sub.close()

 

ubuntu安装网络调试工具deb

https://pan.baidu.com/disk/home#/all?path=%2F%E5%85%A8%E6%A0%88%2Fpython%2F%E5%B7%A5%E5%85%B7&vmode=list

 

 

import socket


if __name__ == '__main__':
    # 创建套接字
    socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 绑定地址和端口号
    # 端口号复用
    socket_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    socket_server.bind(("", 9090))
    # 监听等待最大的连接数
    socket_server.listen(128)
    # 接受数据
    # 每次当客户端和服务端建立连接成功都会返回一个新的套接字
    # 这个套接字只负责建立请求连接,不负责收发数据
    new_client, ip_port = socket_server.accept()
    print(ip_port)
    data = new_client.recv(1024)
    recv_content = data.decode('utf-8')
    print(recv_content)
    send_content = "问题处理中..."
    new_client.send(send_content.encode('utf-8'))
    new_client.close()
    # 关闭链接
    socket_server.close()

 

 

import socket
import threading


def accept(ip_port, new_client):
    print(ip_port)
    while True:
        data = new_client.recv(1024)
        if data:
            recv_content = data.decode('utf-8')
            print('接受到客户端消息:', ip_port, recv_content)
            send_content = "问题处理中..."
            new_client.send(send_content.encode('utf-8'))
        else:
            print('客户端', ip_port, '下线!')
            break
    new_client.close()


if __name__ == '__main__':
    # 创建套接字
    socket_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 绑定地址和端口号
    # 端口号复用
    socket_server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
    socket_server.bind(("", 9090))
    # 监听等待最大的连接数
    socket_server.listen(128)
    while True:
        # 接受数据
        # 每次当客户端和服务端建立连接成功都会返回一个新的套接字
        # 这个套接字只负责建立请求连接,不负责收发数据
        new_client, ip_port = socket_server.accept()
        client_thread = threading.Thread(target=accept, args=(ip_port, new_client))
        client_thread.daemon = True
        client_thread.start()
    # 关闭链接
    socket_server.close()

 

おすすめ

転載: blog.csdn.net/qq_41179365/article/details/110916424