Python教程12

Python教程12

  1.udp发送数据:

import socket

def main():
    # 创建一个udp套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)  # 第一个参数是ipv4协议,第二个参数是udp
    # 使用套接字发送数据,第一个参数是发送数据,第二个参数是一个元祖
    # udp_socket.sendto(b"jnjhhjdik111jj5555", ("192.168.1.7", 8080))  # 使用b表示发送数据流是bit
    while True:
        # 从键盘获取数据
        send_data = input("请输入要发送的数据:")
        if send_data == "exit":
            break
        udp_socket.sendto(send_data.encode("utf-8"), ("192.168.1.7", 8080))  # 多采用.encode("utf-8")设置数据流的编码
    # 关闭套接字
    udp_socket.close()

if __name__ == "__main__":
    main()

  2.udp接收数据

import socket

def main():
    # 1.创建套接字
    udp_socket2 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 2.绑定本地信息,如果一个网络程序不绑定,则系统会随机分配
    localaddr = ("", 7788)  # ip地址和端口号,IP一般不用谢,表示本机的任何一个IP
    udp_socket2.bind(localaddr)
    while True:
        # 3.接收数据,1024表示接收的最大字节数
        recv_date = udp_socket2.recvfrom(1024)
        # 4.打印接收的数据
        print(recv_date)
        # 接收到的元组数据(b‘http://www.cmsoft.cn‘, (‘192.168.1.7‘, 8080))前面是数据信息,后面发送方的IP和端口
        recv_msg = recv_date[0]  # 接收到的数据
        send_addr= recv_date[1]  # 发送方的信息,是个元组
        print("发送方信息:%s   发送的数据:%s" % (str(send_addr), recv_msg.decode("gbk")))  # 发送的英文不用解,Windows默认发送的gbk解码,Ubuntu是utf-8
    # 5.关闭套接字
    udp_socket2.close()

if __name__ == ‘__main__‘:
    main()

  3.udp聊天工具

import socket

def send_msg(udp_socket):
    """发送信息"""
    # 定义发送的需要的信息
    dest_ip = input("请输入对方的IP:")
    dest_port = int(input("请输入对方端口号:"))
    send_data = input("请输入需要发送的信息: ")
    udp_socket.sendto(send_data.encode("utf-8"), (dest_ip, dest_port))

def recv_msg(udp_socket):
    """接收数据"""
    recv_data = udp_socket.recvfrom(1024)
    print("发送方的IP%s ,发送的信息%s" % (str(recv_data[1]), recv_data[0].decode("gbk")))

def main():
    # 创建套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    # 绑定信息
    loacladdr = ("", 7788)
    udp_socket.bind(loacladdr)
    # 循环处理发送接收数据
    while True:
        print("--------------XXX聊天工具-------------")
        print("1 .发送信息")
        print("2 .接收信息")
        print("3 .退出系统")
        op = input("请输入功能:")
        # 发送数据
        if op == "1":
            send_msg(udp_socket)
        # 接收数据
        elif op == "2":
            recv_msg(udp_socket)
        elif op == "0":
            break
        else:
            print("输入有误,请重新输入......")
    # 关闭套接字

if __name__ == ‘__main__‘:
    main()

  4.tcp_client发送信息

import socket

def main():
    # 1.创建套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 2.连接服务器
    # tcp_socket.connect(("192.168.1.7", 7890))
    server_ip = input("请输入服务器IP:")
    server_port = int(input("请输入服务器的端口:"))
    server_addr = (server_ip, server_port)
    tcp_socket.connect(server_addr)
    # 3.发送接收数据
    send_data = input("请输入要发送的数据:")
    tcp_socket.send(send_data.encode("gbk"))
    # 4.关闭套接字
    tcp_socket.close()

if __name__ == "__main__":
    main()

  5.tcp_server接收、发送数据

import socket

def main():
    # 1.创建套接字
    tcp_server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 2.绑定信息
    tcp_server_socket.bind(("", 7890))
    # 3.设置套接字为监听状态,默认都写128
    tcp_server_socket.listen(128)
    while True:
        print("等待一个客户端来连接........")
        # 4.客户端连接
        new_client_socket, client_addr = tcp_server_socket.accept()
        print("打印连接的客户端信息:%s" % str(client_addr))
        # 循环接收、发送信息
        while True:
            # 5.接收/发送客户端信息
            recv_data = new_client_socket.recv(1024)
            print("打印接收到客户端的信息:%s" % recv_data.decode("gbk"))
            # 注意客户端未发送数据,表示客户端close,(客户端是不能发送为空值得),有数据则需要服务器处理
            if recv_data:
                new_client_socket.send("服务器接收成功......ok ....".encode("gbk"))  # Windows用gbk,Linux用utf-8
            else:
                break
        # 6.关闭套接字
        new_client_socket.close()
        print("已经服务完毕......")
    tcp_server_socket.close()

if __name__ == ‘__main__‘:
    main()

  6.文件下载client

import socket

def main():
    # 1.创建套接字
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    # 2.获取服务器的IP和端口
    dest_ip = input("请输入服务器IP:")
    dest_port = int(input("请输入端口:"))
    # 3.连接服务器
    tcp_socket.connect((dest_ip, dest_port))
    # 4.获取下载的文件名
    download_file_name = input("请输入需要下载的文件名:")
    # 5.将文件名发送给服务器
    tcp_socket.send(download_file_name.encode("gbk"))
    # 6.接收文件中的数据
    recv_data = tcp_socket.recv(1024)
    # 如果有读取到数据,则下载,没有读取到则服务器不发送数据,接收到为空
    if recv_data:
        # 7.保存数据到文件,新建文件多用with open
        with open("[新]" + download_file_name, "wb") as f:
            f.write(recv_data)
    # 8.关闭套接字
    tcp_socket.close()

if __name__ == ‘__main__‘:
    main()

  7.文件下载server

import socket

def send_file_2_client(new_client_socket, client_addr):
    file_name = new_client_socket.recv(1024).decode("gbk")
    print("客户端s%需要下载的文件:s%" % (str(client_addr), file_name))
    print("开始发送数据给客户端.....")
    file_content = None
    # 打开文件
    try:
        f = open(file_name, "rb")
        file_content = f.read()
        f.close()
    except Exception as ret:
        print("没有下载的文件。。。。")
    # 发送文件
    if file_content:
        new_client_socket.send(file_content)

def main():
    tcp_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    tcp_socket.bind(("", 7890))
    tcp_socket.listen(128)
    while True:
        new_client_socket, client_addr = tcp_socket.accept()
        # 调用下载方法
        send_file_2_client(new_client_socket, client_addr)
        new_client_socket.close()
    tcp_socket.close()

if __name__ == ‘__main__‘:
    main()

 

原文地址:https://www.cnblogs.com/jun1/p/10091721.html

时间: 2024-11-05 20:25:51

Python教程12的相关文章

简明 Python 教程:总结

 简明 Python 教程 说明:本文只是对<简明Python教程>的一个总结.请搜索该书查看真正的教程. 第3章 最初的步骤 1. Python是大小写敏感的. 2. 在#符号右面的内容都是注释 3. Python至少应当有第一行那样的特殊形式的注释.它被称作组织行——源文件的头两个字符是#!,后面跟着一个程序.这行告诉你的Linux/Unix系统当你执行你的程序的时候,它应该运行哪个解释器. #!/usr/bin/python 4. Linux/Unix用户适用:chmod命令用来改变文件

【转帖】简明 Python 教程

简明 Python 教程   下一页 简明 Python 教程 Swaroop, C. H. 著 沈洁元  译 版本:1.20 A Byte of Python Copyright © 2003-2005 Swaroop C H 简明 Python 教程 <简明 Python 教程>为 "A Byte of Python" 的唯一指定简体中文译本,版权 © 2005 沈洁元 本书依照 创作公用约定(署名-非派生作品-非商业用途) 发布. 概要 无论您刚接触电脑还是一个有经验

【转】简明 Python 教程

原文网址:http://woodpecker.org.cn/abyteofpython_cn/chinese/ 简明 Python 教程Swaroop, C. H. 著沈洁元  译www.byteofpython.info 版本:1.20 A Byte of Python Copyright © 2003-2005 Swaroop C H 简明 Python 教程 <简明 Python 教程>为 "A Byte of Python" 的唯一指定简体中文译本,版权 © 200

Python教程5

Python教程5 1.公共方法 # -*-coding:utf-8-*- a = [1, 2, 3] # del 的两种用法 del a[1] print(a) del (a[1]) print(a) del (a) # len方法 a1 = [1, 2, 3] print(len(a1)) # 返回容器中元素的最大/最小值,如果是字典则针对Key比较大小 t_str = "jw1qeyhwoqjdxjwlomz" print(max(t_str)) # 返回容器最大值 print(

简明Python教程笔记(二)----用户交互raw_input()

raw_input() python内建函数 将所有输入看做字符串,返回字符串类型 input()对待纯数字输入时具有自己的特性,它返回所输入的数字的类型( int, float ) input() 本质上还是使用 raw_input() 来实现的,只是调用完 raw_input() 之后再调用 eval() 函数 例子: #!/usr/bin/env pythonthis_year = 2014name = raw_input('please input your name:')age1 =

简明Python教程笔记(一)

#!/usr/bin/env python#Filename : helloworld.py#The use of 'and"  print 'hello,world!'print "hello,world!" #The use of '''and"""print '''This is a multi-line string. This is the first line.This is the second line."What's

Python教程:操作数据库,MySql的安装详解

各位志同道合的同仁请点击上方关注 本教程是基于Python语言的深入学习.本次主要介绍MySql数据库软件的安装.不限制语言语法,对MySql数据库安装有疑惑的各位同仁都可以查看一下. 如想查看学习Python相关文章,请移步:Python开发实战系列教程-链接汇总,持续更新. 数据库的应用在软件开发领域是重重之重.大量数据和配置被保存在数据库中以被使用.如果想开发一套软件系统与数据库是分不开的.发展到现在,各类数据库应需求而生:关系型与非关系型.单机与分布式.文件型内存型等等. 对于关系型数据

Python 教程

The Python Tutorial Python 教程 Python是一种很容易学习并且功能强大的编程语言.它有着高效的数据结构并且以面向对象的编程方式而拥有简单且高效的特性.Python优雅的语法,动态的类型和她自然的解释,使她成为一种理想的脚本语言和一种在大多平台里许多领域上的快速开发语言.Python解释器和广泛的标准库在Python的网站上https://www.python.org/是面向所有主要的平台免费开源并且自由使用的.在同一个网址上还包含了很多免费的第三方模块,程序,工具和

简明 Python 教程中的第一个备份脚本

第一次学习python写的脚本 原为简明 Python 教程中的第一个脚本 原脚本如下 #!/usr/bin/python # Filename: backup_ver1.py import os import time # 1. The files and directories to be backed up are specified in a list. source = ['/home/swaroop/byte', '/home/swaroop/bin'] # If you are u