BLACKPYTHON学习(一)

发布时间:2019-05-11 22:36:34编辑:auto阅读(2082)

    C/S结构了解

    所谓的C/S就是客户端(client)和服务器端(server)的简称,也就是在基于这个的基础上编写相关的代码;一个就是客户端一个就是服务端。

    TCP(client) 客户端编写

    #因为是在Python2.7的版本所以使用该socket包
    import socket  
    
    #定义地址和端口   
    target_host = "127.0.0.1" 
    target_port = 9999
    
    #编写套接字定义协议和tcp    
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
    
    #从包中调用connect函数链接服务器端口和地址    
    s.connect((target_host,target_port))
        
    #向服务器端发送一条信息
    s.send("I am TCP.")
    
    #recv函数接收返回信息    
    response = s.recv(1024)
    
    #打印返回信息    
    print response

    这里有几点注意:socket里的两个参数AF_INET表示的是使用IPV4协议,SOCK_STREAM表示使用TCP协议

    TCP(server) 服务端编写

    import socket   
    import threading
    
    #监听的端口和地址
    bind_ip = "127.0.0.1"
    bind_port = 9999
    
    #同上
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    
    #监听该端口和地址
    s.bind((bind_ip,bind_port))
    
    #最大连接数
    s.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("ACK!")
          client_socket.close() #关闭该服务器
          
    while True:
    
           #把接受到的数据放到addr数组里
           client, addr = s.accept()
           print "[*] Accepted connection from:%s:%d" %(addr[0], addr[1])
           
           client_handler = threading.Thread(target=handle_client,args=(client,))
           client_handler.start()
       
      
      
      

    代码实现过程中遇到的问题

    代码实现过程中遇到了一个socket error[10061]的报错,具体查看了下源代码,发现是服务器端和客户端的端口号不一致导致的。但是也不知道为什么,本地使用ping监测该端口居然显示关闭的情况下,客户端也可以链接成功。有待进一步琢磨。

    小结

    简单来说,该两个模式下的代码思路

    TCP client

    • 创建地址和Ip
    • 创建一个套接字定义协议
    • 连接服务器
    • 发送数据
    • 接受回执信息

    TCP server

    • 创建套接字定义协议
    • 监听端口
    • 设定最大连接数
    • 打印相关信息

关键字

上一篇: Linux Ubuntu 16.04 p

下一篇: Python @property 详解