#--------------------- 伺服器端**--------------------
# -*- coding: utf-8 -*-
# author : kele
# time : 2018/12/27 19:13
# 匯入socket
import socket, threading
# 建立乙個socket物件
server = socket.socket(socket.af_inet, socket.sock_stream)
# 獲取本機ip
host = socket.gethostname()
# 給定埠
port = 9090
# 服務端ip和埠
server.bind((host, port))
# 最大鏈結數
server.listen(5)
print('輸入enter退出伺服器:')
client, addr = server.accept()
print('-'*5+f'伺服器被'+'-'*5)
def outdatas():
while true:
# 輸入要給客戶端的資訊
outdata = input('')
if outdata=='enter':
break
print('傳送給客戶端:%s'% outdata)
# 給客戶端傳送資訊
client.send(outdata.encode('utf-8'))
def indatas():
while true:
# 接收來自客戶端的資訊
indata = client.recv(1024)
print('客戶端:'+indata.decode('utf-8'))
# 建立多執行緒
t1 = threading.thread(target=indatas, name='input')
t2 = threading.thread(target=outdatas, name='out')
# 啟動多執行緒
t1.start()
t2.start()
# 堵塞執行緒知道子執行緒執行完畢,主線程才能結束
# t1.join()
t2.join()
# 關閉伺服器
client.close()
print('-'*5+'伺服器斷開連線'+'-'*5)
#--------------------- 客戶端**--------------------
# -*- coding: utf-8 -*-
# author : kele
# time : 2018/12/27 19:22
# 匯入socket包
import socket, threading
# 建立客戶端物件
client = socket.socket(socket.af_inet, socket.sock_stream)
# 目標主機
host = input('請輸入目標ip')
# 目標埠
port = 9090
# 連線客戶端
client.connect((host, port))
print('-'*5+'已連線到的伺服器'+'-'*5)
print('-'*5+'輸入enter關閉與伺服器的鏈結'+'-'*5)
def outdatas():
while true:
# 輸入要傳送給伺服器的資訊
outdata = input('')
if outdata=='enter':
break
print('傳送給伺服器:%s'% outdata)
# 傳送給伺服器
client.send(outdata.encode('utf-8'))
def indatas():
while true:
# 接收來自伺服器的資訊
indata = client.recv(1024)
# 將接收到的資訊,進行編碼
print('伺服器:'+indata.decode('utf-8'))
# 建立多執行緒
t1 = threading.thread(target=indatas, name='input')
t2 = threading.thread(target=outdatas, name='out')
# 啟動多執行緒
t1.start()
t2.start()
# 堵塞執行緒知道子執行緒執行完畢,主線程才能結束
# t1.join()
t2.join()
# 關閉鏈結
print('-'*5+'伺服器斷開連線'+'-'*5)
client.close()
Python學習 socket基礎
socket為介面通道,內部封裝了ip位址 埠 協議等資訊 我們可以看作是以前的通過 機撥號上網的年代,socket即為 線 我們通過下面的圖來了解socket的通訊流程 流程描述 1 伺服器根據位址型別 ipv4,ipv6 socket型別 協議建立socket 2 伺服器為socket繫結ip位...
Python入門 socket基礎介紹
python 提供了兩個基本的 socket 模組。第乙個是 socket,它提供了標準的 bsd sockets api。第二個是 socketserver,它提供了伺服器中心類,可以簡化網路伺服器的開發。下面講的是socket模組功能 1 socket 型別 套接字格式 socket famil...
python基礎(12) 初識Socket
socket 網路上的兩個程式通過乙個雙向的通訊連線實現資料的交換,這個連線的一端稱為乙個socket。socket的英文原義是 孔 或 插座 作為bsd unix的程序通訊機制,取後一種意思。通常也稱作 套接字 用於藐視ip位址和埠,是乙個通訊鏈的控制代碼,可以用來實現不同的虛擬機器或不同計算機之...