• 网络基础


    网络基础

    对于这个网络基础,需要你懂的一点TCP/IP协议的相关知识,最起码知道socket(套接字)是什么。简单来说,套接字就是由地址和端口组成。其次就是懂的socket这个python的模块。


    socket:底层网络接口

    该模块提供对BSD套接字接口的访问。 它可以在所有现代的Unix系统,Windows,MacOS和其他可能的平台上使用。因为调用了操作系统套接字APIs,所以一些行为在不同操作系统上可能不一样。python接口是将Unix系统调用和库接口直接转换为Python的面向对象样式,socket()函数返回一个套接字对象,这个对象的方法(比如下文的send和recv方法)实现各种套接字系统调用。参数类型封装程度比c接口要高,很多细节我们不用管。(英文好的看官方文档


    TCP客户端1


    这个客服端是用来连接百度的服务器的。接下来我们构建另一个客户端,连接自己写的的服务器。

    TCP客户端2

    先上代码:

    import socket
    
    target_host = "127.0.0.1"
    target_port = 8888
    
    #创建一个socket对象
    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    #连接客户端
    client.connect((target_host, target_port))
    
    #发送一些数据
    client.send(b"Today is 520
    ")
    
    #接收一些数据
    response = client.recv(4096)
    
    print(response)  
    

    首先,我们要明白这个客服端的作用:
    如果在另一台你能连通的主机上,已经启用了TCP服务端,那么通过这个客服端,你便能发送信息并且接收响应。它们之间的通信通路,便是由socket(即服务端ip地址,端口和客户端ip地址以及端口)建立的

    TCP服务端

    这个服务端是和上面TCP客户端2配套使用的
    import socket
    import threading

    bind_ip = "127.0.0.1"
    bind_port = 8888
    
    server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    
    server.bind((bind_ip, bind_port))
    
    server.listen(5)
    
    print("[*] Listening on %s:%d" % (bind_ip, bind_port))
    
    def handle_client(client_socket):
        request = client_socket.recv(1024)
        print("[*] Received: %s" % request)
        client_socket.send(b"ACK!")
        client_socket.close()
    
    while True:
        client, addr = server.accept()
        #print(client) 
        # output:<socket._socketobject object at 0x7f3628764280>  TCP server正是通过这个client对象与客户端通信的
        #print(addr)   output:('127.0.0.1', 58542)  这里的58542是端口号,是系统随机分配的
        print("[*] Accepted connection from:%s:%d" % (addr[0], addr[1]))
        
        client_handler = threading.Thread(target=handle_client, args=(client, ))
        client_handler.start()  
    

    看运行结果:

    是不是很简单?

  • 相关阅读:
    03:信号与槽,以字体修改为例
    赞不绝口点赞器原作者的撤项信
    钉钉魔铃 铃声切换器 1.0 项目失败
    KC开发组官方网站
    搜索引擎知识
    现在的手机厂家真浮躁
    02:QT的第一个程序
    第一次做编程语言的英语阅读理解
    mysql 报错[Err] [Dtf] 1292
    Mysql 精确查询是否字段中包含某个字符串
  • 原文地址:https://www.cnblogs.com/busui/p/6881581.html
Copyright © 2020-2023  润新知