socket应用
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应用的更多相关文章
- socket读写返回值的处理
在调用socket读写函数read(),write()时,都会有返回值.如果没有正确处理返回值,就可能引入一些问题 总结了以下几点 1当read()或者write()函数返回值大于0时,表示实际从缓冲 ...
- Socket聊天程序——Common
写在前面: 上一篇记录了Socket聊天程序的客户端设计,为了记录的完整性,这里还是将Socket聊天的最后一个模块--Common模块记录一下.Common的设计如下: 功能说明: Common模块 ...
- Socket聊天程序——客户端
写在前面: 上周末抽点时间把自己写的一个简单Socket聊天程序的初始设计和服务端细化设计记录了一下,周二终于等来毕业前考的软考证书,然后接下来就是在加班的日子度过了,今天正好周五,打算把客户端的详细 ...
- Socket聊天程序——服务端
写在前面: 昨天在博客记录自己抽空写的一个Socket聊天程序的初始设计,那是这个程序的整体设计,为了完整性,今天把服务端的设计细化记录一下,首页贴出Socket聊天程序的服务端大体设计图,如下图: ...
- Socket聊天程序——初始设计
写在前面: 可能是临近期末了,各种课程设计接踵而来,最近在csdn上看到2个一样问答(问题A,问题B),那就是编写一个基于socket的聊天程序,正好最近刚用socket做了一些事,出于兴趣,自己抽了 ...
- Java中的Socket的用法
Java中的Socket的用法 Java中的Socket分为普通的Socket和NioSocket. 普通Socket的用法 Java中的 ...
- Android Socket连接PC出错问题及解决
最近测试问题:Android 通过Socket链接电脑,ip和端口都是正确的,也在同一网段,可android端就是报异常如下: 解决办法:测试电脑的防火墙可能开着,在控制面板把防火墙打开即可.
- Linux下的C Socket编程 -- server端的继续研究
Linux下的C Socket编程(四) 延长server的生命周期 在前面的一个个例子中,server在处理完一个连接后便会立即结束掉自己,然而这种server并不科学啊,server应该是能够一直 ...
- Mono 3.2.3 Socket功能迎来一稳定的版本
由于兴趣自己业余时间一直在搞.net下面的通讯应用,mono的存在得以让.NET程序轻松运行在Linux之下.不过经过多尝试Socket相关功能在Mono下的表现并不理想.不管性能还是吞吐能力方面离我 ...
- Demo源码放送:打通B/S与C/S !让HTML5 WebSocket与.NET Socket公用同一个服务端!
随着HTML5 WebSocket技术的日益成熟与普及,我们可以借助WebSocket来更加方便地打通BS与CS -- 因为B/S中的WebSocket可以直接连接到C/S的服务端,并进行双向通信.如 ...
随机推荐
- 洛谷P3355 骑士共存问题(最小割)
传送门 de了两个小时的bug愣是没发现错在哪里……没办法只好重打了一遍竟然1A……我有点想从这里跳下去了…… 和方格取数问题差不多,把格子按行数和列数之和的奇偶性分为黑的和白的,可以发现某种颜色一定 ...
- Svn安装成功后的操作
一.服务器端创建目录 在Svn服务器端创建一个用来保存客户端提交文件的文件夹 (我的路径是d:/Svn/App/book) 首先将Svn的服务端安装目录/bin 进行环境配置,以下操作是在进行环境配置 ...
- ASP.NET后台取html控件值方式
1.Request.Form[“cbName”]: 可以在后台取到所有为name 为的控件的value值 2.可以通过 把html控件的值付给HiddenField,然后后台调用 3.就是自定义属性 ...
- 在pycharm中使用指定的虚拟环境virtualenv
第一步 建立虚拟环境 cmd下: pip install virtualenv 创建虚拟环境目录 env 第二步:激活虚拟环境 进入虚拟环境下的script目录 第三步:创建一个flask文件夹并打开 ...
- HDU-2063(二分图匹配模板题)
过山车Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submissi ...
- C# 字符串操作,可空类型,文档注释,嵌套类型
字符串 字符串是Unicode字符串数组,且是不可变的 这种操作不会影响到原来的字符串,它会新添加一个副本. 有关Split的操作 using System; using System.Collect ...
- matlab实用教程
苏金明.2005.电子工业 1 语句末尾加 : 可以不显示到屏. who 查看变量 whos 列出变量信息 exist t 判断变量是否在空间中. help 函数 doc 函数 : doc f ...
- UVa 253
UVa 253 #include <iostream> #include <cstdio> #include <string> #include <cstri ...
- ngin日志格式
日志格式 为了更好满足分析场景,推荐采用如下log_format配置. log_format main '$remote_addr - $remote_user [$time_local] &qu ...
- .reverse ,join,split区分
* 1:arrayObject.reverse() * 注意: 该方法会改变原来的数组,而不会创建新的数组. * 2:arrayObject.join() * 注意:join() 方法用于把数组中的所 ...