1. 程式人生 > >網路程式設計基礎【day08】:簡單socket例項(二)

網路程式設計基礎【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的連結