网络编程基础【day08】:简单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()   #关闭服务端

三、总结

  1. python2中可客户端或者服务端均可发送字符串和字节,但是在python3中只能发字节,也就bytes类型的比特流
  2. 服务端接收客户端的链接时,会返回跟客户端的链接标志位的实例和对方ip地址+随机端口号
  3. 此例子只是TCP/IP协议的socket链接,后面继续学习UDP的链接

猜你喜欢

转载自www.cnblogs.com/luoahong/p/9896030.html