L3-20

exe1:client

from socket import *
# 1. 使用面向对象编程的方式定义客户端类Client
class Client:
    def __init__(self, ip, port):
        self.socket = socket()
        self.socket.connect((ip, port))
    def run(self):
        self.socket.send('童童,你好!我是小派。'.encode())
        res = self.socket.recv(1024).decode()
        print('客户端收到的消息:', res)
        self.socket.close()


# 2. 创建客户端对象client,传入域名:l345.61it.cn和端口号:10021
client = Client('l345.61it.cn', 10021)
# 3. 调用run()方法
client.run()

exe2:client

from socket import *


class Client:
    def __init__(self, ip, port):
        self.socket = socket()
        self.socket.connect((ip, port))

    def run(self):
        self.socket.send("童童,你好!我是小派。".encode())
        res = self.socket.recv(1024).decode()
        print('客户端收到的消息:', res)
        self.socket.close()


client = Client('localhost', 10021)
client.run()

exe2:server

from socket import *
# 1. 使用面向对象编程的方式定义服务端类Server
class Server:
    def __init__(self, ip, port):
        self.socket = socket()
        self.socket.bind((ip, port))
        self.socket.listen()

    def run(self):
        print('等待客户端连接...')
        connSocket, addr = self.socket.accept()
        req = connSocket.recv(1024).decode()
        print('接收到客户端的消息:', req)
        connSocket.send('你好,我是服务端。我收到你的消息了!'.encode())
        connSocket.close()
        self.socket.close()

# 2. 创建服务端对象server,传入ip:0.0.0.0和端口号:10021
server = Server('0.0.0.0', 10021)
# 3. 调用run方法,启动服务端
server.run()

05:client

from socket import *

class Client:
    def __init__(self, ip, port):
        self.socket = socket()
        self.socket.connect((ip, port))

    def run(self):
        while True:
            content = input('请输入发送的内容:')
            if not content:
                continue
            self.socket.send(content.encode())
            res = self.socket.recv(1024).decode()
            print('客户端收到的消息:', res)
        self.socket.close()


client = Client('localhost', 10021)
client.run()

 03:client

from socket import *


class Client:
    def __init__(self, ip, port):
        self.socket = socket()
        self.socket.connect((ip, port))

    def run(self):
        # 1. 添加无限循环
        while True:
            # 2. 获取输入消息内容
            content = input("请输入消息内容:")
            # 3. 如果内容为空,就跳过当前循环并重新输入
            if not content:
                continue
        # 4. 发送输入的内容,并给下面3行代码添加一个缩进
            self.socket.send(content.encode())
            res = self.socket.recv(1024).decode()
            print('客户端收到的消息:', res)
        self.socket.close()


client = Client('l345.61it.cn', 10021)
client.run()

 04:client

from socket import *

class Client:
    def __init__(self, ip, port):
        self.socket = socket()
        self.socket.connect((ip, port))

    def run(self):
        while True:
            content = input('请输入发送的内容:')
            if not content:
                continue
            self.socket.send(content.encode())
            res = self.socket.recv(1024).decode()
            print('客户端收到的消息:', res)
        self.socket.close()


client = Client('localhost', 10021)
client.run()

 04:server

import socket


class Server:
    def __init__(self,ip,port):
        self.socket = socket.socket()
        self.socket.bind((ip, port))
        self.socket.listen()

    def run(self):
        print('等待链接。。。')
        connSocket, addr = self.socket.accept()
        # 1. 添加无限循环
        while True:
        # 2. 给下面3行代码添加一个缩进
            req = connSocket.recv(1024).decode()
            print('服务端收到的消息:', req)
            connSocket.send('你好,我是服务端。我收到你的消息了!'.encode())
        connSocket.close()
        self.socket.close()


server = Server('0.0.0.0', 10021)
server.run()


05:client

from socket import *

class Client:
    def __init__(self, ip, port):
        self.socket = socket()
        self.socket.connect((ip, port))

    def run(self):
        while True:
            content = input('请输入发送的内容:')
            if not content:
                continue
            self.socket.send(content.encode())
            res = self.socket.recv(1024).decode()
            print('客户端收到的消息:', res)
        self.socket.close()


client = Client('localhost', 10021)
client.run()

 

 05:server

import socket


class Server:
    def __init__(self,ip,port):
        self.socket = socket.socket()
        self.socket.bind((ip, port))
        self.socket.listen()

    def run(self):
        print('等待链接。。。')
        connSocket, addr = self.socket.accept()
        while True:
            req = connSocket.recv(1024).decode()
            # 1.如果收到的消息为空,则结束循环,关闭套接字
            if not req:
                break
            print('服务端收到的消息:', req)
            connSocket.send('你好,我是服务端。我收到你的消息了!'.encode())
        connSocket.close()
        self.socket.close()


server = Server('0.0.0.0', 10021)
server.run()


06:client

from socket import *


class Client:
    def __init__(self, ip, port):
        self.socket = socket()
        self.socket.connect((ip, port))

    def run(self):
        while True:
            content = input('请输入发送的内容:')
            if not content:
                continue
            self.socket.send(content.encode())
            res = self.socket.recv(1024).decode()
            print('客户端收到的消息:', res)
        self.socket.close()


client = Client('localhost', 10021)
client.run()

06:server

import socket


class Server:
    def __init__(self, ip, port):
        self.socket = socket.socket()
        self.socket.bind((ip, port))
        self.socket.listen()

    def run(self):
        # 1. 添加无限循环
        while True:
        # 2. 给下面9行代码添加一个缩进
            print('等待链接。。。')
            connSocket, addr = self.socket.accept()
            while True:
                req = connSocket.recv(1024).decode()
                if not req:
                    break
                print('服务端收到的消息:', req)
                connSocket.send('你好,我是服务端。我收到你的消息了!'.encode())
            connSocket.close()
        self.socket.close()


server = Server('0.0.0.0', 10021)
server.run()


 

08:client:

from socket import *

class Client:
    def __init__(self, ip, port):
        self.socket = socket()
        self.socket.connect((ip, port))

    def run(self):
        while True:
            content = input('请输入发送的内容:')
            if not content:
                continue
            self.socket.send(content.encode())
            res = self.socket.recv(1024).decode()
            print('客户端收到的消息:', res)
        self.socket.close()


client = Client('localhost', 10021)
client.run()

07:线程

import threading
import time


def father(task):
    for i in range(5):
        print('爸爸正在做%s' % task)
        time.sleep(1)


t1 = threading.Thread(target=father, args=['扫地'])
t1.start()


# 1. 定义son函数,实现儿子正在做的任务
def son(task):
    for i in range(5):
        print('儿子正在做%s' % task)
        time.sleep(1)
# 2. 创建子线程t2,执行son函数,传入参数:擦桌子,并启动t2子线程
t2 = threading.Thread(target=son, args=['擦桌子'])
t2.start()
# 3. 输出:主线程结束
print('主线程结束')

 08:client

from socket import *

class Client:
    def __init__(self, ip, port):
        self.socket = socket()
        self.socket.connect((ip, port))

    def run(self):
        while True:
            content = input('请输入发送的内容:')
            if not content:
                continue
            self.socket.send(content.encode())
            res = self.socket.recv(1024).decode()
            print('客户端收到的消息:', res)
        self.socket.close()


client = Client('localhost', 10021)
client.run()

08:server

from socket import *
import threading


class Server:
    def __init__(self, ip, port):
        self.socket = socket()
        self.socket.bind((ip, port))
        self.socket.listen()

    def run(self):
        while True:
            print('等待链接。。。')
            connSocket, addr = self.socket.accept()
            # 2.创建子线程t,执行handle方法,传入参数connSocket,并启动线程t
            t = threading.Thread(target=self.handle, args=(connSocket,))
            t.start()
        self.socket.close()

    # 1. 定义handle方法,封装run方法中内层循环和关闭连接socket的代码
    def handle(self, connSocket):
        while True:
            req = connSocket.recv(1024).decode()
            print('接收到的消息:', req)
            if not req:
                break
            connSocket.send('你好,我收到你的消息了!'.encode())
        connSocket.close()

server = Server('0.0.0.0', 10021)
server.run()


practice:

# 1. 定义minCost函数和参数cost,计算整个路程的最小车费
def minCost(cost):
    # 2. 保存所有地点的最小车费,前两个点的最小车费已获得
    mins = [0, cost[0]]
    # 3. i从2开始到len(cost)反复执行三步计算
    for i in range(2, len(cost) + 1):
        # 4. 第一步: 前一站点出发车费+前一站点之前最小车费
        min1 = mins[i - 1] + cost[i - 1]
        # 5. 第二步: 前二站点出发车费+前二站点之前最小车费
        min2 = mins[i - 2] + cost[i - 2]
        # 6. 两个和取最小值,存入mins中当前i位置备用
        m = min(min1, min2)
        mins.append(m)
    # 7. 返回最后一次计算的最小车费
    return m

#  8. 终点之前每个站点出发的车费列表
cost = [20, 15, 5, 25, 16]
# 9. 调用函数计算整个路程的最小车费
m = minCost(cost)
print(m)

 

解除端口占用:

import os
import subprocess

def kill_process_on_port(port):
    # 在 windows 电脑上
    if os.name == 'nt':
        command = f'netstat -ano | findstr :{port}'
        process_info = subprocess.check_output(command, shell=True, encoding='utf-8').strip()
        print(process_info)
        if process_info != '':
            pid = process_info.split()[-1]
            subprocess.run(f'taskkill /pid {pid} /f', shell=True, stdout=subprocess.DEVNULL)
            print(f'Killed process with PID {pid}')
        else:
            print(f'No process is running on port {port}')
    # 在Mac电脑上
    else:
        command = f'netstat -nav | grep {port} | awk \'{{print $9}}\' | cut -d \'.\' -f 1'
        process_info = os.popen(command).read().strip().split('\n')[1:]
        if process_info != ['']:
            for process in process_info:
                pid = process.split()[1]
                os.system(f'kill -9 {pid}')
        else:
            print(f'No process is running on port {port}')

# 用法示例
kill_process_on_port(10021)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值