博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python socket
阅读量:5325 次
发布时间:2019-06-14

本文共 1727 字,大约阅读时间需要 5 分钟。

服务器:

import socketimport threadingserver = socket.socket(socket.AF_INET, socket.SOCK_STREAM)server.bind(('0.0.0.0', 8000))server.listen()def handle_sock(sock, addr):    while True:        data = sock.recv(1024)        print(data.decode("utf8"))        re_data = input()        sock.send(re_data.encode("utf8"))#获取从客户端发送的数据#一次获取1k的数据while True:    sock, addr = server.accept()    #用线程去处理新接收的连接(用户)    client_thread = threading.Thread(target=handle_sock, args=(sock, addr))    client_thread.start()

 

 

客户端:

import socketclient = socket.socket(socket.AF_INET,socket.SOCK_STREAM)client.connect(('127.0.0.1', 8000))while True:    re_data = input()    client.send(re_data.encode("utf8"))    data = client.recv(1024)    print(data.decode("utf8"))

 

 

socket模拟http请求:

import socketfrom urllib.parse import urlparsedef get_url(url):    #通过socket请求html    url = urlparse(url)    host = url.netloc    path = url.path    if path == "":        path = "/"    #建立socket连接    client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)    client.connect((host, 80)) #阻塞不会消耗cpu    #不停的询问连接是否建立好, 需要while循环不停的去检查状态    #做计算任务或者再次发起其他的连接请求    client.send("GET {} HTTP/1.1\r\nHost:{}\r\nConnection:close\r\n\r\n".format(path, host).encode("utf8"))    data = b""    while True:        d = client.recv(1024)        if d:            data += d        else:            break    data = data.decode("utf8")    html_data = data.split("\r\n\r\n")[1]    print(html_data)    client.close()if __name__ == "__main__":    import time    start_time = time.time()    for url in range(20):        url = "http://shop.projectsedu.com/goods/{}/".format(url)        get_url(url)    print(time.time()-start_time)

 

 socker类型介绍:

 

转载于:https://www.cnblogs.com/callyblog/p/11129270.html

你可能感兴趣的文章
POJ 3670 DP LIS?
查看>>
空心菱形的显示
查看>>
Eclipse 常用快捷键清单
查看>>
redis 存储时间区间的数据
查看>>
STM32F0库函数初始化系列:进入STOP模式,外部中断唤醒
查看>>
p1525 关押罪犯
查看>>
使用Html5shiv.js让ie支持html5
查看>>
DBA 优化法则
查看>>
用Python连接SQLServer抓取分析数据、监控 (pymssql)
查看>>
升级ruby后再安装cocodPod
查看>>
MySQL数据库8(十三)高级数据操作之select指令
查看>>
随心测试_Python Se_002<不同浏览器驱动>
查看>>
在ASP.NET WebService 中如何使用 WebMethod 属性
查看>>
一个很详细的web.xml讲解
查看>>
Java输入输出流
查看>>
java实现文件的复制
查看>>
BZOJ 4695 最假女选手 线段树
查看>>
好的分析报告应该包含的内容
查看>>
使用GIT的失败过程
查看>>
Unity3d 协程的注意问题(新手须注意,老手须加勉)
查看>>