最近两天把第一部分的网络编程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的更多相关文章

  1. 17 网络客户端编程 - 《Python 核心编程》

  2. 21 数据库编程 - 《Python 核心编程》

  3. 20 Web 编程 - 《Python 核心编程》

  4. 19 图形用户界面编程 - 《Python 核心编程》

  5. 18 多线程编程 - 《Python 核心编程》

  6. python核心编程第二版笔记

    python核心编程第二版笔记由网友提供:open168 python核心编程--笔记(很详细,建议收藏) 解释器options:1.1 –d   提供调试输出1.2 –O   生成优化的字节码(生成 ...

  7. python核心编程--笔记

    python核心编程--笔记 的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找pyt ...

  8. Python核心编程第二版(中文).pdf 目录整理

    python核心编程目录 Chapter1:欢迎来到python世界!-页码:7 1.1什么是python 1.2起源  :罗萨姆1989底创建python 1.3特点 1.3.1高级 1.3.2面向 ...

  9. python核心编程--笔记(不定时跟新)(转)

    的解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   ...

  10. python核心编程笔记(转)

    解释器options: 1.1 –d   提供调试输出 1.2 –O   生成优化的字节码(生成.pyo文件) 1.3 –S   不导入site模块以在启动时查找python路径 1.4 –v   冗 ...

随机推荐

  1. 分享一本Swift好书

    http://yuedu.baidu.com/ebook/6f6c3b1ef01dc281e43af000?pn=1&rf=http%3A%2F%2Fyuedu.baidu.com%2Febo ...

  2. php中抓取网页内容的代码

    方法一: 使用file_get_contents方法实现 $url = "http://news.sina.com.cn/c/nd/2016-10-23/doc-ifxwztru695114 ...

  3. 资源监控工具Spotlight-使用说明

    几年前使用过此工具,发现用于监控远程服务器,非常方面而且快捷.当前再次用于配合压力测试进行资源监控,突然想起来了,以免生疏,在此记录! 1.被监控服务器为Ubuntu server,先在服务器上创建一 ...

  4. Android Dagger依赖注入框架浅析

    今天接触了Dagger这套android的依赖注入框架(DI框架).感觉跟Spring 的IOC差点儿相同吧.这个框架它的优点是它没有採用反射技术(Spring是用反射的),而是用预编译技术.因为基于 ...

  5. [AX]AX2012 Number sequence framework :(三)再谈Number sequence

    AX2012的number sequence framework中引入了两个Scope和segment两个概念,它们的具体作用从下面序列的例子说起. 法国/中国的法律要求财务凭证的Journal nu ...

  6. 系统UINavigationController使用相关参考

    闲来无事便在网上google&baidu了一番UINavigationController的相关文章,然后又看了下官方文档:看看更新到iOS7之后UINavigationController的 ...

  7. .Net基础

     标题  状态  内容        NET应用程序是如何执行的?    http://www.cnblogs.com/kingmoon/archive/2012/07/16/2594459.html ...

  8. CodeBlocks16.01+wxWidgets3.0.2

    [环境] windows7 x64,CodeBlocks16.01,wxWidgets3.0.2 [步骤] 一.下载所需的文件: 1.codeblocks官网:http://www.codeblock ...

  9. windows 程序设计自学:添加图标资源

    #include <windows.h> #include "resource.h" LRESULT CALLBACK MyWndProc( HWND hwnd, // ...

  10. linux的文件种类与扩展名

    一.文件种类: 1.普通文件(regular file)第一个字符为[ - ] 包括:①纯文本档(ASCII):这是Linux系统中最多的一种文件类型,称为纯文本档.是因为内容为我们人类可以直接读到的 ...