python 簡單聊天互動 v1

2021-09-25 01:12:07 字數 2293 閱讀 5147

python socket學習筆記

socket介紹:

分類:流式套接字: sock_stream 傳輸層基於tcp協議進行通訊

資料報套接字: sock_dgram 傳輸層基於udp協議進行通訊

原始套接字: sock_raw 訪問底層協議的套接字

套接字使用的流程

socket --> bind --> listen --> accept --> send/receive --> close

socket程式設計步驟

import socket

1, 建立套接字

socket(socket_family=af_inet,

socket_type = sock_stream,

proto = 0)

socket_family 選擇協議族種類: af_inet: ipv4

socket_type: 套接字種類, sock_stream/ sock_dgram

proto 子協議,通常為0

2,繫結ip和port

sock.bind(('ip_address',port))

功能:繫結ip和埠

引數是乙個元組;

3, 讓其具有監聽功能

sock.listen(n)

功能: 使套接字變為監聽套接字,同時建立監聽佇列;

引數:n監聽佇列大小

4, 等待客戶端連線

sock.accept()

功能:阻塞等待客戶端連線;

返回值: 第乙個,返回乙個 新的套接字,用來和客戶端通訊

第二個, 返回連線的客戶端的位址

5, 訊息的收發

recv(buffer): 

功能:接收訊息; 

buffer: 單次接收訊息的大小

返回值: 返回接收到的內容

send(data):            

功能:傳送訊息

data: 傳送內容,  byte格式;

返回值: 傳送了多少位元組

6, 關閉套接字

sock.close()

關閉套接字

server端程式:

from socket import *

#create socket

sock = socket(af_inet,sock_stream,0)

#bind 繫結本機位址和埠號;

sock.bind(('192.168.10.1',8888))

#listen

sock.listen(5)

#使用外層迴圈可以讓server 多次接受連線

while true:

print('waitting for connect...')

#accept

sock_c, addr_c = sock.accept()

print('{} has connect.'.format(addr_c))

#rec,send

#記憶體迴圈,可以和client多次互動傳送訊息

while true:

data = sock_c.recv(1024)

if not data:

break

print(data.decode())

msg = input('>>>')

sock_c.send(msg.encode())

if not msg:

break

#close

sock_c.close()

sock.close()

client端程式:

from socket import *

#create

sock_client = socket(af_inet, sock_stream, 0)

#connect

#填寫server的位址和埠

sock_client.connect(('192.168.10.1',8888))

#send

while true:

msg = input('>>>')

sock_client.send(msg.encode())

if not msg:

break

#receive

data = sock_client.recv(1024)

if not data:

break

print(data.decode())

#close

sock_client.close()

程式設計必會單詞v1

程式設計必會單詞v1 exception 異常 bound 邊界 out of bounds 越界 index 索引 amount 總量 serialize 序列化 deserialize 反序列化 serializable 可序列化的 general 通常的 exist 存在的 project 工...

貓狗大戰V1

matplotlib inline import numpy as np import os import matplotlib.pyplot as plt fnames np.array f train for f in sorted os.listdir train labels np.arra...

《白話統計》筆記 v 1

3.關於統計資料型別的思考 知道概率密度有什麼用?因為使用的分布都有固定的形狀,只要確定了相應的引數就可以明確該分布的形狀。一般利用統計軟體求出相應的引數,這樣就可以根據這些引數來說明數的變化規律。選擇用什麼分布都是根據經驗。之前應該還選擇了其它的分布形式,只是該分布形式效果好就留下了。如果想知道感...