手动建立客户端和服务器端

天天写一些源码分析感觉没什么意思,这一系列的文章带大家用python进行网络编程,编写一些黑客常用工具及脚本,希望大家喜欢。
首先我们先来看一下手动编写的tcp_client:

# coding=utf8

import socket

target_host = "www.baidu.com"
target_port = 80

client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

client.connect((target_host, target_port))

client.send("GET / HTTP/1.1\r\nhost: baidu.com\r\n\r\n")

response = client.recv(4096)
print(response)

这里target_port表示目标地址端口,host表示请求地址名称,利用socket的属性进行链接,然后发送数据接受数据。

接着我们上tcp_server的代码:

# coding=utf8

import socket
import threading

bind_ip = "127.0.0.1"
bind_port = 9999

server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

server.bind((bind_ip, bind_port))

server.listen(5)

print "[*] Listening on %s %s" % (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 1:
    client, addr = server.accept()
    print "[*] Accepted connection from : %s:%d" % (addr[0], addr[1])

    client_handle = threading.Thread(target=handle_client, args=(client,))
    client_handle.start()

这里同样是首先建立一个socket对象,其实客户端和服务器的本质都是socket之间的通信,只不过服务器端需要监听端口,编写一个处理接受的数据的函数而已。这里我们利用无线循环进行不停的处理发送过来的请求,这是最简单的处理方式,还有很多高级的利用内核事件的处理方式,暂时不说,把这理解透彻,一点一点来。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 个人认为,Goodboy1881先生的TCP /IP 协议详解学习博客系列博客是一部非常精彩的学习笔记,这虽然只是...
    贰零壹柒_fc10阅读 5,090评论 0 8
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 13,132评论 6 174
  • 1、TCP状态linux查看tcp的状态命令:1)、netstat -nat 查看TCP各个状态的数量2)、lso...
    北辰青阅读 9,509评论 0 11
  • 末晓JZ阅读 141评论 0 1
  • 搭建属性库的前提,首选需要确定属性的目的性,如何快速便捷的让各个展示端去调用去,属性库的价值在哪里,想通这一点,我...
    趣味产品阅读 1,308评论 1 51