socket的使用

socket.socket(网络层ip协议蔟,传输层协议类型,默认协议)

# server.py
# 导入模块
import socket # 实例化服务器,使用ipv4协议,tcp协议
s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 绑定端口号 0.0.0.0监听所有ip地址
s.bind(('0.0.0.0',12345)) # 监听端口,设置连接数
s.listen(5) # 阻塞挂起,等待客户端连接
connSocket,addr = s.accept() # 连接成功后,接收客户端发来的数据,设置一次接收的数据大小,1kb
data = connSocket.recv(1024) # 返回数据
connSocket.send(data) # 断开连接
connSocket.close() # client.py
# 导入模块
import socket # 实例化客户端
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM) # 连接服务器
client.connect(('127.0.0.1',8080)) # 接收服务器数据
client.recv(1024) # 断开连接
client.close()

socket的通信过程

socket的应用

# 模拟http客户端发送请求

# 导入socket模块和url解析模块
import socket
from urlparse import urlparse # 定义发送请求get_url函数
def get_url(url):
# 解析url
url = urlparse(url)
# 提取主机名
host = url.netloc
# 提取路径
path = url.path
# 如果路径没有,访问根路径
if path == "":
path = "/"
# 客户端实例化
client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
# 建立socket连接
client.connect((host,80))
# 构造http协议
protol = "GET {} HTTP/1.1\r\nHOST:{}\r\nConnection:close\r\n\r\n".format(path,host)
# 发送请求数据
client.send(protol)
# 定义data接收服务器的返回结果
data = ""
# 确保接收完数据
while True:
d = client.recv(1024)
# 如果有值继续拼接
if d:
data += d
else:
break
# 将返回协议提取出来
html_data = data.split('\r\n\r\n')[1]
# 打印提取结果
print html_data
# 断开tcp连接

socket应用的更多相关文章

  1. socket读写返回值的处理

    在调用socket读写函数read(),write()时,都会有返回值.如果没有正确处理返回值,就可能引入一些问题 总结了以下几点 1当read()或者write()函数返回值大于0时,表示实际从缓冲 ...

  2. Socket聊天程序——Common

    写在前面: 上一篇记录了Socket聊天程序的客户端设计,为了记录的完整性,这里还是将Socket聊天的最后一个模块--Common模块记录一下.Common的设计如下: 功能说明: Common模块 ...

  3. Socket聊天程序——客户端

    写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...

  4. Socket聊天程序——服务端

    写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...

  5. Socket聊天程序——初始设计

    写在前面: 可能是临近期末了,各种课程设计接踵而来,最近在csdn上看到2个一样问答(问题A,问题B),那就是编写一个基于socket的聊天程序,正好最近刚用socket做了一些事,出于兴趣,自己抽了 ...

  6. Java中的Socket的用法

                                   Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...

  7. Android Socket连接PC出错问题及解决

    最近测试问题:Android 通过Socket链接电脑,ip和端口都是正确的,也在同一网段,可android端就是报异常如下: 解决办法:测试电脑的防火墙可能开着,在控制面板把防火墙打开即可.

  8. Linux下的C Socket编程 -- server端的继续研究

    Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...

  9. Mono 3.2.3 Socket功能迎来一稳定的版本

    由于兴趣自己业余时间一直在搞.net下面的通讯应用,mono的存在得以让.NET程序轻松运行在Linux之下.不过经过多尝试Socket相关功能在Mono下的表现并不理想.不管性能还是吞吐能力方面离我 ...

  10. Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!

    随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信.如 ...

随机推荐

  1. hadoop的maven地址

    https://mvnrepository.com/artifact/org.apache.hadoop

  2. 详细解读Python中的__init__()方法

    init()方法意义重大的原因有两个.第一个原因是在对象生命周期中初始化是最重要的一步:每个对象必须正确初始化后才能正常工作.第二个原因是init()参数值可以有多种形式. 因为有很多种方式为init ...

  3. 关于RN热更新-iOS端捕获加载jsbundle异常解决方案

    1.监听加载jsbundle异常的处理 模拟情况:合并增量后jsbundle文件出现部分错误调试发现当加载jsbundle出现异常时,RN模块RCTBatchedBridge.m中如下代码会执行: - ...

  4. svn 命令

    svn基本的操作流程就是: 你刚刚进入一个新的公司,让你接手一个正在进行的项目,你打开终端写下了:svn co svn://192.168.1.1/pro/domain 然后就可以在当前目录里面找到一 ...

  5. 【算法笔记】B1022 D进制的A+B

    1022 D进制的A+B (20 分) 输入两个非负 10 进制整数 A 和 B (≤2​30​​−1),输出 A+B 的 D (1<D≤10)进制数. 输入格式: 输入在一行中依次给出 3 个 ...

  6. POJ 2182 Lost Cows (求序列第k大)

    题解 二分+树状数组 显然最和一个数的值就是rank 那么其它数有什么规律? 从后往前匹配rank,我们可以发现第i个数的rank为还没有匹配的rank第(a[i]+1)大的数 这可以用 树状数组+二 ...

  7. Python-append()/extend()

    append()向列表尾部添加一个新的元素,只接受一个参数 extend()只接受一个列表作为参数,将参数中的每个元素都添加到原列表 append()用法示例: >> mylist = [ ...

  8. Fleury算法求欧拉路径

    分析: 小Ho:这种简单的谜题就交给我吧! 小Hi:真的没问题么? <10分钟过去> 小Ho:啊啊啊啊啊!搞不定啊!!!骨牌数量一多就乱了. 小Hi:哎,我就知道你会遇到问题. 小Ho:小 ...

  9. (转)Openldap相关精品文章

    1.运维咖啡吧 https://mp.weixin.qq.com/s__biz=MzU5MDY1MzcyOQ==&mid=2247483754&idx=1&sn=9f20d45 ...

  10. sql server优化思路

    查询速度慢的原因很多,常见如下几种:    1.没有索引或者没有用到索引(这是查询慢最常见的问题,是程序设计的缺陷)    2.I/O吞吐量小,形成了瓶颈效应.    3.没有创建计算列导致查询不优化 ...