網路基礎之socket

2022-08-14 01:51:20 字數 2311 閱讀 2177

我們知道ip層的ip位址可以唯一標示主機,而tcp層協議和埠號可以唯一標示主機的乙個程序,這樣我們可以利用ip位址+協議+埠號唯一標示網路中的乙個程序。能夠唯一標示網路中的程序後,它們就可以利用socket進行通訊了.

什麼是socket呢?我們經常把socket翻譯為套接字,socket是在應用層和傳輸層之間的乙個抽象層,它把tcp/ip層複雜的操作抽象為幾個簡單的介面**用層呼叫已實現程序在網路中通訊。

socket 示例:

服務端(python實現):

import

socket

#建立乙個socket物件

server = socket.socket() #

相當於建立了一部**

ip_port = ('

192.168.111.1

',8001) #

建立乙個**卡

server.bind(ip_port) #

插上**卡

server.listen(5) #

監聽著**,我能監聽5個,接到乙個**之後,後面還能有四個人給我打**,但是後面這四個人都要排隊等著,等著我第乙個**掛掉,再來第6個的時候,第六個人的手機會報錯

print('

11111')

#等著別人給我打**,打來**的時候,我就拿到了和對方的這個連線通道conn和對方的**號碼addr

conn,addr = server.accept() #

阻塞住,一直等到有人連線我,連線之後得到乙個元祖,裡面是連線通道conn和對方的位址(ip+埠)

print('

22222')

print

(conn)

print('

>>>>>>>>>

',addr)

while

true:

from_client_data = conn.recv(1024) #

服務端必須通過兩者之間的連線通道來收訊息

from_client_data = from_client_data.decode('

utf-8')

print

(from_client_data)

if from_client_data == '

bye'

:

break

server_input = input('

明威說》:')

conn.send(server_input.encode(

'utf-8'))

if server_input == '

bye'

:

break

conn.close()

#掛**

server.close() #

關手機

客戶端:

#

_*_coding:utf-8_*_

import

socket

import

time

client =socket.socket()

server_ip_port = ('

192.168.111.1

',8001)

client.connect(server_ip_port)

while

true:

client_input = input('

小文說》:')

client.send(client_input.encode(

'utf-8

')) #

給服務端傳送訊息

if client_input == '

bye'

:

break

from_server_data = client.recv(1024)

print('

來自服務端的訊息:

',from_server_data.decode('

utf-8'))

if from_server_data.decode('

utf-8

') == '

bye'

:

break

client.close()

#客戶端掛**

注意:先執行server,然後再執行client,然後你會發現client這個檔案再輸出臺的地方讓你輸入內容,你輸入乙個內容然後回車,你會發現server那邊的控制台就輸出了以client傳送的內容

詳細的一些關於socket以及tcp以及udp協議傳輸的可看 :

網路基礎之 網路基礎,socket程式設計

1 什麼是socket 網路基礎 socket 2 為何要學習socket程式設計 基於socket開發乙個c s或者b s結構的軟體 client 網路 server browser 網路 server 3 如何基於socket程式設計 網路 網路是什麼 底層的物理連線介質 網際網路通訊協議 os...

socket網路程式設計基礎

伺服器與客戶端 p94 p98先學習基礎 再學習socket程式設計 參考socket,也叫套接字,描述了計算機是ip位址和埠,電腦程式之間採用socket進行通訊。socket把複雜的tcp ip協議族隱藏在介面後面,方便使用。tcp提供流和資料報兩種通訊方式,所以套接字也分為流套接字和資料報套接...

網路基礎 Socket程式設計

tpc的服務端要先監聽乙個埠,一般是先呼叫bind函式,給這個soket賦予乙個ip位址和埠。當服務端有了ip和埠號,就可以呼叫listen函式進行監聽。這時候客戶端就可以發起連線了。在作業系統中,為每個socket維護兩個佇列。乙個是已經建立了連線的佇列,三次握手已完畢,處於established...