Python基礎socket一對一聊天室

2021-09-05 11:54:52 字數 2478 閱讀 1947

#--------------------- 伺服器端**--------------------

# -*- 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位址和埠,是乙個通訊鏈的控制代碼,可以用來實現不同的虛擬機器或不同計算機之...