网络编程:socket--python核心编程(3),chapter 1
最近两天把第一部分的网络编程socket好好学习了一番,收获也蛮多的。。。
套接字:能使运行在不同或相同计算机上运行的进行通信;套接字一种是基于文件的(同一台计算机进程间通信),另一种是基于网络的(同一台或不同计算机进程通信),经常使用的是AF_INET
套接字又分:无连接的 和 面向连接的;面向连接的套接字,也就是我们常说的tcp连接;无连接的套接字,就是udp;因为基于网络的所以就要通过ip协议来进行传输,所以下面是通过socket来创建udp和tcp连接:
tcp:tcptest = socket.socket(AF_INET,SOCK_STREAM) tcp:流套接字,SOCK_STREAM
udp: udptest = socket.socket(AF_INET,SOCK_DGRAM) udp:数据报(datagram),SOCK_DGRAM
下面将分别使用tcp和udp进行传输,包括服务端和客户端(本次测试:服务端和客户端都是在本机)
1、tcp创建服务器和客户端,常用的方法:s.bind()、s.listen()、s.accept()、s.connect()、s.recv()、s.send()
s.bind():将地址和端口绑定到套接字上;s.listen():设置并启动监听器;s.accept():接收tcp客户端连接
s.connect():tcp客户端连接服务器;s.recv():接收tcp消息;s.send():发送tcp消息
a:TCP服务器:TcpServer.py
#coding=utf-8 """
author : xiaoshitou
date : 2016-08-08
"""
from socket import *
from time import ctime host = '127.0.0.1'
port = 2000
bufsiz = 1024
addr = (host, port) tcpServer = socket(AF_INET, SOCK_STREAM)
tcpServer.bind(addr)
tcpServer.listen(5) while True:
print 'TCP...waiting for connection...'
tcpClientSock, addr = tcpServer.accept()
print 'TCP...connected from: {0}'.format(addr,) while True:
data = tcpClientSock.recv(bufsiz)
if not data:
break
tcpClientSock.send('TCP: {0}: {1}'.format(ctime(), data)) tcpClientSock.close()
tcpServer.close()
b:TcpClient.py
#coding=utf-8 """
author : xiaoshitou
date : 2016-08-09
"""
from socket import * host = '127.0.0.1'
port = 2000
bufsiz = 1024
addr = (host, port) tcpclient = socket(AF_INET,SOCK_STREAM)
tcpclient.connect(addr) while True:
data = raw_input('> ')
if not data:
break
tcpclient.send(data)
data = tcpclient.recv(bufsiz)
if not data:
break
print data tcpclient.close()
执行结果:

2、udp创建服务器和客户端,常用方法:s.recvfrom():接收udp消息;s.sendto():发送udp消息
a、UdpServer.py
#coding=utf-8 """
author : xiaoshitou
date : 2016-08-09
"""
from socket import *
from time import ctime host = '127.0.0.1'
port = 2000
bufsiz = 1024
addr = (host, port) udpserver = socket(AF_INET, SOCK_DGRAM)
udpserver.bind(addr) while True:
print 'UDP...waiting for message...'
data, addr = udpserver.recvfrom(bufsiz)
udpserver.sendto('UDP: {0}: {1}'.format(ctime(), data), addr)
print 'UDP...received from and returned to: {0}'.format(addr,) udpserver.close()
b、UdpClient.py
#coding=utf-8 """
author : xiaoshitou
date : 2016-08-09
"""
from socket import *
from time import ctime host = '127.0.0.1'
port = 2000
bufsiz = 1024
addr = (host, port) udpclient = socket(AF_INET,SOCK_DGRAM) while True:
data = raw_input('> ')
if not data:
break
udpclient.sendto(data, addr)
data, addr = udpclient.recvfrom(bufsiz)
if not data:
break
print data udpclient.close()
udp服务端和客户端执行结果:

网络编程:socket--python核心编程(3),chapter 1的更多相关文章
- 17 网络客户端编程 - 《Python 核心编程》
- 21 数据库编程 - 《Python 核心编程》
- 20 Web 编程 - 《Python 核心编程》
- 19 图形用户界面编程 - 《Python 核心编程》
- 18 多线程编程 - 《Python 核心编程》
- python核心编程第二版笔记
python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d 提供调试输出1.2 –O 生成优化的字节码(生成 ...
- python核心编程--笔记
python核心编程--笔记 的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找pyt ...
- Python核心编程第二版(中文).pdf 目录整理
python核心编程目录 Chapter1:欢迎来到python世界!-页码:7 1.1什么是python 1.2起源 :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向 ...
- python核心编程--笔记(不定时跟新)(转)
的解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 1.4 –v ...
- python核心编程笔记(转)
解释器options: 1.1 –d 提供调试输出 1.2 –O 生成优化的字节码(生成.pyo文件) 1.3 –S 不导入site模块以在启动时查找python路径 1.4 –v 冗 ...
随机推荐
- 将自己写的windows服务加入到windows集群中
最近发现windows集群能进行很多自定义,比如在集群中加入自己编写的服务. 能自定义的可不少,截个图: 本次演示中,只想用“通用服务”这个类型. 先列下步骤 编写一个记录时间的Windows服务,这 ...
- JAVA的Proxy动态代理在自动化测试中的应用
JAVA的动态代理,在MYBATIS中应用的很广,其核心就是写一个interface,但不写实现类,然后用动态代理来实例化并执行这个interface中的方法,话不多说,来看一个实现的例子: 1.先定 ...
- Vmware9.0打开早期版本报错:this virtual machine’s policies are too old to be run by this version of vmware workstation”
VMWare从6.0升级到9.0,打开以前的虚拟机报错如下: “this virtual machine’s policies are too old to be run by this versio ...
- 【转】Windows Phone 8 开发环境的搭建
1.先安装Microsoft Visual Studio 2012旗舰版,安装包自己下载. 系统必须是Win8 X64 对于软硬件的检测可以参照: Windows Phone 8开发环境搭建之一.电脑 ...
- web项目总结
web项目 Webroot下面的index.jsp页面的内容: <%@ page language="java" pageEncoding="UTF-8" ...
- The Monty Hall Problem
GNG1106 Lab 3The Monty Hall ProblemBackgroundThe Monty Hall Problem is a famous probability puzzle, ...
- GameOver
GameOver. 正了八经的觉得GameOver了.该开始新的了.
- Linux连续执行多条命令
引自:这里 每条命令使用";"隔开,则无论前边的命令执行成功与否都会继续执行下一条命令这里,故意将第二条命令中的echo多写了一个o,命令执行出错,但并不影响后续命令的执行可以这么 ...
- 8 个最优秀的 Android Studio 插件
Android Studio是目前Google官方设计的用于原生Android应用程序开发的IDE.基于JetBrains的IntelliJ IDEA,这是Google I/O 2013第一个宣布的作 ...
- 2014年黑金FPGA原创教程规划发布
2014年已经过去快一半了,才出黑金2014年的FPGA原创教程规划,有点对不起大家了,哈哈! 俗话说,亡羊补牢,为时不晚,希望大家谅解啊,对于大家的支持,我们黑金人一向是感激.感恩.感谢! 下面大概 ...