python学习笔记(六)网络编程
来源:互联网 发布:sql删除数据库字段 编辑:程序博客网 时间:2024/06/05 17:01
socket,又叫套接字,是一个抽象的概念。通常用socket表示打开了一个网络连接。
在计算机网络中学过TCP/IP协议,将网络分为物理层、网际层、传输层,应用层等。网络编程一般属于传输层之上的内容,会用到TCP、UDP协议。其中TCP是有连接传输,UDP是无连接的。
开始
网络的作用是实现计算机互连与资源共享,因此数据传输是其核心内容。要实现数据的传输,需要知道要传输目标的IP地址,因此双方互连需要至少知道一个地址。
通常把提前知道地址的那一端称作服务器,发送数据请求的那一端称作客户端:
服务器
服务器接收客户端的数据请求,从客户端的请求信息中得到其地址,然后通过地址将所需数据发送回去。
分为有连接的TCP服务器和无连接的UDP服务器。
TCP的服务器需先建立连接后发送数据,而UDP无需建立连接随时可以接收与发送数据。
def tcp_sever(): while(true): s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.bind(('127.0.0.1',9999)) s.listen(2) sock, addr = s.accept() data = sock.recv(1024) print data sock.send('hello') sock.close()def udp_sever(): while(true): s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) s.bind(('127.0.0.1',9999)) data = sock.recv(1024) print data sock.send('hello') sock.close()
这两段代码的作用都是从客户端接收数据,打印数据然后发送一个hello,然后结束连接。
bind代表将服务器绑定到一个地址和一个端口上,0.0.0.0是所有地址,代表接收所有地址发来的信息,这里使用本机地址;端口号9999代表这个程序的所在端口。
listen表示开始监听是否有连接
要对多个客户端进行处理必须用到多线程,这里暂时放下。
客户端
客户端要连接服务器必须先知道服务器的IP地址,这里使用127.0.0.1即本机地址作为测试。(连接一些网站用的是网站的域名,域名可以通过域名服务器转换为IP地址)
def tcp_client(): s = socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('127.0.0.1',9999)) str = raw_input() s.send(str) print s.recv(1024) s.close()def udp_client(): s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) str = raw_input() s.sendto(str,('127.0.0.1',9999)) print s.recv(1024) s.close()
编写测试代码
def mainfunc(): cho = raw_input() if(cho == '1'): print 'tcp_sever' tcp_sever() elif(cho == '2'): print 'tcp_client' tcp_client() elif(cho == '3'): udp_sever() elif(cho == '4'): udp_client()if __name__ == '__main__': mainfunc()
参考资料:
http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/001386832511628f1fe2c65534a46aa86b8e654b6d3567c000
- python学习笔记(六)网络编程
- Python核心编程学习笔记(六)
- Python学习 网络编程(六) 网络爬虫
- [python]python学习笔记(六)——界面编程
- python网络编程学习笔记(一)
- python网络编程学习笔记(一)
- python网络编程学习笔记(二)
- python网络编程学习笔记(1)--网络编程背景
- Python学习笔记(六)网络通信
- 黑马程序员学习笔记之六(java网络编程)
- Java网络编程学习笔记(六)服务器Socket
- 学习笔记(六) 网络编程与数据处理
- 《Python编程》笔记(六)
- python网络编程学习笔记
- Python学习笔记(六)--面向对象编程
- Python学习笔记(六)——面向对象编程
- 计算机科学与Python编程导论_MIT 学习笔记(六)
- python学习笔记(六) - 面向对象编程
- 机器学习-实战-入门-iris数据分析
- ubuntu 安装HDF5 ,torch-hdf5,loadcaffe等
- Redis 命令与键(key)
- Web Uploader上传组件
- android 获得通话记录
- python学习笔记(六)网络编程
- Java线程面试题 Top 50 (转载)
- 基于卷积神经网络的手写汉字识别[matlab版本][可识别509类汉字]
- Android 如何判断拨打电话对方是否接听
- opencv3.x+opencv_contrib安装
- MyBatis_4
- SSH使用QBC查询时无法将查处的集合存入实体集合中,而是返回Object[]
- 【LeetCode with Python】 Best Time to Buy and Sell Stockd
- Spring json和 Map, List等bean的转换