python网络编程-01
python网络编程
1.socket模块介绍
①在网络编程中的一个基本组件就是套接字(socket),socket是两个程序之间的“信息通道”。
②套接字包括两个部分:服务器套接字、客户机套接字
③一个套接字就是一个socket模块中的socket类的实例。
如:
import socket
s=socket.socket() #socket类实例化
实例化需要3个参数:
地址族:默认是socket.AF_INET
流: 默认是socket.SOCK_STREAM
使用的协议:默认是0
对于一个普通的套接字,不需要提供任何参数。
- Socket类型:
- Socket函数:
2. socket编程思路:
- Tcp服务端:
1.创建套接字,绑定套接字到本地ip与端口 (socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.bind())
2.开始监听连接 (s.listen())
3.进入循环,不断接受客户端的连接请求 (s.accept())
4.然后接收传来的数据,并发送给对方数据 (s.sendall(), s.recv())
5.传输完毕后,关闭套接字。 (s.close())
- TCP 客户端:
1.创建套接字,连接远端地址 (socket.socket(socket.AF_INET,socket.SOCK_STREAM) , s.connect())
2.连接后关送数据和接收数据 (s.sendall(), s.recv() )
3.传输完毕后,关闭套接字 (s.close())
【实例】:
>客户端部分
import socket
import time
#编写一个客户端测试程序
s = socket.socket()
s.connect(('127.0.0.1',12306))
data = s.recv(512)
s.send('hello')
time.sleep(2)
s.close()
print '收到服务端的消息是:',data
>服务端部分
import socket
#编写一个服务端测试程序
s = socket.socket()
s.bind(('127.0.0.1',12306))
s.listen(5)
conn,address = s.accept()
print "收到客户端地址信息:",address
conn.send("ByeBye")
ra = conn.recv(512)
print "收到客户端发的消息:",ra
s.close()
3.socket其它应用
从网络上查找主机:
import socket
print socket.gethostname() #查找当前主机的正式名字
print socket.gethostbyname('www.baidu.com') #将服务器名字转为数字地址
print socket.gethostbyname_ex('www.baidu.com') #访问更多有关服务器的更多命名信息
print socket.gethostbyaddr('10.34.41.xx') #通过ip来查看主机名
返回结果:
ll-RobotFrame
115.239.210.26
python网络编程-01的更多相关文章
- python网络编程01 /C/S架构|B/S架构、网络通信原理、五层协议、七层协议简述、端口映射技术
python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述.端口映射技术 目录 python网络编程01 /C/S架构|B/S架构.网络通信原理.五层协议.七层协议简述. ...
- python网络编程01
1.什么是C/S架构? 客户端/服务器架构.实现服务端软件与客户端软件基于网络的通信. 2.互联网协议是什么?分别介绍五层协议中每一层的功能? 互联网协议是指用于互联网通信的规范.分为:osi七层.t ...
- Python 网络编程(二)
Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...
- Python 网络编程(一)
Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- Python学习(22)python网络编程
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- Day07 - Python 网络编程 Socket
1. Python 网络编程 Python 提供了两个级别访问网络服务: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口 ...
- 《Python网络编程》学习笔记--使用谷歌地理编码API获取一个JSON文档
Foundations of Python Network Programing,Third Edition <python网络编程>,本书中的代码可在Github上搜索fopnp下载 本 ...
- Python网络编程基础pdf
Python网络编程基础(高清版)PDF 百度网盘 链接:https://pan.baidu.com/s/1VGwGtMSZbE0bSZe-MBl6qA 提取码:mert 复制这段内容后打开百度网盘手 ...
- python 网络编程(Socket)
# from wsgiref.simple_server import make_server## def RunServer(environ,start_response):# start_resp ...
随机推荐
- Quartz 2D 概述
Quartz 2D是一个二维图形绘制引擎,支持iOS环境和Mac OS X环境.我们可以使用Quartz 2D API来实现许多功能,如基本路径的绘制.透明度.描影.绘制阴影.透明层.颜色管理.反锯齿 ...
- NavigationBar--修改返回按钮的标题
UIBarButtonItem *backItem = [[[UIBarButtonItem alloc] init] autorelease]; backItem.title = @"返回 ...
- 20160115--Hibernate
package com.hanqi.dao; import static org.junit.Assert.*; import java.util.*; import org.hibernate.se ...
- eclipse中输入的中文为繁体的问题
今天在eclipse中编写注释的时候发现,输入的中文都为繁体,且只在eclipse编辑器中为繁体,切换到网页中则为正常. 最后发现,竟然是输入法的shift+ctrl+F快捷键和eclipse的冲突. ...
- MySQL之外键约束
MySQL之外键约束 MySQL有两种常用的引擎类型:MyISAM和InnoDB.目前只有InnoDB引擎类型支持外键约束.InnoDB中外键约束定义的语法如下: [CONSTRAINT [symbo ...
- python3.5之mysql扩展
最近在学习廖雪峰的python3的教程,这是官方http://www.liaoxuefeng.com/,建议大家想学习python的同学可以去看看,真的是在网上能找到的最好文本教程,没有之一 在廖老实 ...
- PHP利用递归法获取多级类别的树状数组
数据结构:category(id, pid, name),对应:信息ID,父项ID,类别名 测试数据: $aryCate = array( array('id' => 1, 'pid' => ...
- Oracle GoldenGate学习之Goldengate介绍
Oracle GoldenGate学习之Goldengate介绍 (2012-10-02 17:07:27) 标签: 检查点 数据传输 队列 进程 分类: Goldengate Goldengate介 ...
- [问题解决] 程序部署到Linux服务器乱码
错误: 在windows下开发的eclipse项目需要用java mail发送邮件,在将整个项目部署到linux服务器之后发送的邮件出现了乱码. 发生场景: Linux服务器下的Java mail程序 ...
- 运用JavaScript构建你的第一个Metro式应用程序(onWindows 8)(三)
原文 http://blog.csdn.net/zhangxin09/article/details/6793593 这是<运用 JavaScript构建你的第一个Metro式应用程序>系 ...