网络编程基础【day09】:简单socket实例(二)
本节内容
1、概述
2、socket实例
3、总结
一、概述
之前我们只是介绍了soket的概念和一些逻辑图表,下面我们来看看,socket的客户端和服务端到底是怎么用的?
二、socket实例
2.1 客户端
2.1.1 客户端代码逻辑图
2.1.2 客户端代码
1
2
3
4
5
6
7
8
9
10
|
import socket #导入socket模块 client = socket.socket() #创建socket实例 client.connect(( "localhost" , 6969 )) #建立连接 send_data = "hello word!" #发送的字符串 send_data = send_data.encode() #因为发送是bytes类型,所以这边先转码成bytes类型 client.send(send_data) #发送数据,这边发送的是字节类型,也就是bytes类型 data = client.recv( 1024 ) #接收服务端的数据,这边设置接收1024字节 1kb=1024字节 print ( "server rece:" ,data.decode()) client.close() #关闭与服务端的链接 |
2.2 服务端
2.2.1 服务端代码逻辑图
2.2.2 服务端代码
1
2
3
4
5
6
7
8
9
10
11
12
|
import socket sever = socket.socket() #创建服务端实例 sever.bind(( "localhost" , 6969 )) #绑定客户端ip和端口 sever.listen() #监听端口 print ( "我在电话了...." ) conn,addr = sever.accept() #接收客户端,并且返回连接标志位(conn)实例,和对方的ip地址(addr) data = conn.recv( 1024 ) #接收客户端发过来的数据,接收的也是bytes类型的数据 print ( "我的电话来了" ) print ( "client data:" ,data.decode()) conn.send(data.upper()) #发送数据至服务端,注意这边发送的也是字节类型,是bytes类型 sever.close() #关闭服务端 |
三、总结
- python2中可客户端或者服务端均可发送字符串和字节,但是在python3中只能发字节,也就bytes类型的比特流
- 服务端接收客户端的链接时,会返回跟客户端的链接标志位的实例和对方ip地址+随机端口号
- 此例子只是TCP/IP协议的socket链接,后面继续学习UDP的链接
作者:罗阿红
出处:http://www.cnblogs.com/luoahong/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接。