8)基础网络编程和内容回顾

复习:之前的内容

一、报错后的解决方法:

报错如何解决:

try:
    print(111)
    l = []
    l[2]
    int('a')
    print(222)
except ValueError:
    print('报错了')

except IndexError:
    print('baocuole')

结果:

111

baocuole

try:
    print(111)
    l = []
    l[2]
    int('a')
    print(222)
except ValueError as e :print(e)
except IndexError :print('索引不存在')#list index out of range

报错解决:

总结:try

excpet

except  as

找到一个满足条件的其他分支都不走了

预料不到的是万能异常:

try:
    print(111)
    l = []
    l[2]
    int('a')
    print(222)
except:
    print('出错了')

第二种写法:

缺点:不知道那里出问题了可以加上as   推荐使用

try:
    print(111)
    l = []
    l[2]
    int('a')
    print(222)
except Exception as e :
    print(e)  #list index out of range

具体的异常处理+万能的异常:

#能够提前预料到的异常都应该具体的异常处理, 剩下的其他异常用万能异常控制

#万能异常应该卸载最后

except和else是互斥的如果执行了except那么else将不执行

try:
    l = [1]
    num = int(input('num:'))
    l[num]
except ValueError:print('请输入一个数字')
except IndexError:print('您要找的项目不存在')
except Exception as e :print(e)  #万能异常要写在最下面

else:
    print('执行else了')#num:0
                       #执行else了
    #如果执行try中的代码没有报错,那么就执行else中的代码了

例如发邮件成功之后

def func():
    try:
        f = open('aaa','w')
        ret = f.read()
        return  ret
    except:
        print('error')
    finally:
        f.close()

finally优先级高于return一定会关闭,多用于关闭程序减轻内存

Raise 主动抛异常

不常用,这个方法

Raise ValueError

断言:

assert   1 ==2 # if条件判断

类似  if not 1==2:exit()

assert  1==2
#    assert  1==2   如果是1==1就可以了
#AssertionError

总结:

try   except else  finally

raise  错误类型 自定义异常  自定义一个类继承BaseExecption

断言  看源码

二、模块的使用和定义:

定义:就是py文件的导入  import 导入就能用的

导入模块:

起一个别名:

从一个模块同时导入多个模块:

导入所有的

*和 __all__联合使用的,比如不想让使用某个功能,all中的是可以使用的

 


总结:

From import

任然会执行行整个文件

文件中的名字会被存储在一块独立的内存空间中

Import 后面的名字会出现在全局

相当于对独立命名空间中的一个引用

From import也支持as 导入多个名字

From import * 相当于导入所有名字 *和__all__配合使用是互相影响的

三、包的定义和使用:

一组py文件组成的文件夹,在这个文件夹里有一个__init__.py的包

 

四、网络编程:

服务器端

import socket

sk = socket.socket()  #买手机
sk.bind(('198.9.6.115',9000))#安装电话卡
sk.listen()#开机

conn,addr = sk.accept() # 等待来电话

conn.send(b'hello') #说了一句话hello
conn.close() # 挂断电话
sk.close() # 关机

客户端

import socket

sk = socket.socket()
sk.connect(('198.9.6.115',9000))

print(sk.recv(1024)) #接受一个数据大小

sk.close()

双向发送和接收

Server端:

import socket

sk = socket.socket()  #买手机
sk.bind(('198.9.6.115',9000))#安装电话卡
sk.listen()#开机

conn,addr = sk.accept() # 等待来电话

conn.send(b'hello\n world') #说了一句话hello
print(conn.recv(1024))  #接受
conn.close() # 挂断电话
sk.close() # 关机

Client端:

import socket

sk = socket.socket()
sk.connect(('198.9.6.115',9000))

print(sk.recv(1024)) #接受一个数据大小
sk.send(b'bye')  # 发送
sk.close()

服务端:

import socket

sk = socket.socket()  #买手机
sk.bind(('198.9.6.115',9000))#安装电话卡
sk.listen()#开机

conn,addr = sk.accept() # 等待来电话  三次握手
while True:
    msg = input('>>>')
    conn.send(msg.encode('utf-8')) #说了一句话hello
    if msg =='q':break
    ret = conn.recv(1024).decode('utf-8')
    if ret =='q':break
    print(ret)
conn.close() # 挂断电话
sk.close() # 关机

客户端:

import socket

sk = socket.socket()
sk.connect(('198.9.6.115',9000))
while True:
    ret = sk.recv(1024).decode('utf-8')#接受一个数据大小
    if ret =='q':break
    print(ret)
    msg = input('>>>')
    sk.send(msg.encode('utf-8'))  # 发送
    if msg =='q':break
sk.close()

如果要和另外一个聊就需要在家一个while True在服务端

Server端:

import socket

sk = socket.socket()  #买手机
sk.bind(('198.9.6.115',9001))#安装电话卡
sk.listen()#开机
while True:
    conn,addr = sk.accept() # 等待来电话  三次握手
    while True:
        msg = input('>>>')
        conn.send(msg.encode('utf-8')) #说了一句话hello
        if msg =='q':break
        ret = conn.recv(1024).decode('utf-8')
        if ret =='q':break
        print(ret)
    conn.close() # 挂断电话
sk.close() # 关机

客户端:

import socket

sk = socket.socket()
sk.connect(('198.9.6.115',9001))
while True:
    ret = sk.recv(1024).decode('utf-8')#接受一个数据大小
    if ret =='q':break
    print(ret)
    msg = input('>>>')
    sk.send(msg.encode('utf-8'))  # 发送
    if msg =='q':break
sk.close()

UDP的连接:

最简单的

Server端:

import socket
sk=socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1',8899))
msg,addr = sk.recvfrom(1024)
print(msg)
sk.close()

Client端:

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)

sk.sendto(b'hello',('127.0.0.1',8899))

sk.close()

服务器:

import  socket
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.bind(('127.0.0.1',8898))
msg,addr = sk.recvfrom(1024)
sk.sendto(b'byebye',addr)
print(msg)
sk.close()

客户端:

import socket
sk = socket.socket(type=socket.SOCK_DGRAM)
sk.sendto(b'hello',('127.0.0.1',8898))
msg,addr = sk.recvfrom(1024)
print(msg)
sk.close()

Input:

Server

粘包:

只会发生在TCP协议中

原文地址:http://blog.51cto.com/xiaorenwutest/2121956

时间: 2025-01-07 03:13:36

8)基础网络编程和内容回顾的相关文章

黑马程序员——JAVA基础-网络编程-TCP

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- TCP传输 两个端点的建立连接后会有一个传输数据的通道,这通道称为流,而且是建立在网络基础上的流,称之为socket流.该流中既有读取,也有写入. tcp的两个端点:一个是客户端,一个是服务端. 客户端:对应的对象,Socket 服务端:对应的对象,ServerSocket TCP客户端: ①:建立tcp的socket服务,最好明确具体的地址和端口.这个对象在创建时,就已经可以对指定ip和端口

梦入IBM之java基础-网络编程

如今我们来谈谈最后的内容:网络编程: 1):TCP中是线程与线程进行通讯!内部的执行机制是这种:先有一个线程去监听某个port.然后假设有Socket连接上来了以后,server会生成一个Socket对象与其                进行通讯! 2):通过URL对象能够获得某个某个站点的输入流.(可是这个输入流也是相对于程序的!返回的是一个InputStream的子类!) URL url = new URL("http://www.baidu.com"); HttpURLConn

Java基础——网络编程(一)

本文主要记录网络编程的一些基础知识,学了前班部分,对专业术语有些蒙,但是,收货也是很多很多的.观察了自己计算机的进程,查找其他网络地址的IP,对互联网的层次关系有了更深一步的了解.下面多是概念的摘录,有时间我还要回来再看看,加深理解. 目录: 1.网络编程的基础知识 1.1 网络协议 1.2 tcp /ip 1.3 IP地址 1.4 Port(端口号) 2 UDP/Tcp 3 OSI参考模型 1 网络编程的基础知识 1.1  网络协议 规定了计算机之间连接的物理机械,电器等特性,及计算机间的相互

IT十八掌Java基础 网络编程

网络编程 计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统. 网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换. A:有人说,20世纪最伟大的发明不是计算机,而是计算机网络. 还有人说,如果你买了计算机而没有联网,就等于买了电话机而没有接电话线一样. 网络模型 计算机网络之间以何种规则进行通信,就是网络模型研究问题. 网络模型一般是指 O

Java基础——网络编程

一.网络编程概述 概述: Java是 Internet 上的语言,它从语言级上提供了对网络应用程序的支持,程序员能够很容易开发常见的网络应用程序. Java提供的网络类库,可以实现无痛的网络连接,联网的底层细节被隐藏在 Java 的本机安装系统里,由 JVM 进行控制.并且 Java 实现了一个跨平台的网络库,程序员面对的是一个统一的网络编程环境. 基础: 网络编程的目的: 网络编程的目的就是指直接或间接地通过网络协议与其它计算机进行通讯. 主要存在的问题: 如何准确地定位网络上一台或多台主机

黑马程序员——java基础---网络编程

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.网络通讯 概念:网络间数据的传输.交互. 三要素:IP地址.端口号.传输协议. ——>IP地址 1.网络中设备的标识 2.单纯的IP地址不易记忆,可用主机名替代. 3.如果本机上没有配置任何IP地址的情况下,本机默认的IP地址为127.0.0.1 本地回环地址:127.0.0.1  主机名:localhost 用处:检验本机网卡是否运行正常等. ——>端口号 概念:用于标识进程的数字称为

python基础网络编程--转

python之网络编程 本地的进程间通信(IPC)有很多种方式,但可以总结为下面4类: 消息传递(管道.FIFO.消息队列) 同步(互斥量.条件变量.读写锁.文件和写记录锁.信号量) 共享内存(匿名的和具名的) 远程过程调用(Solaris门和Sun RPC) 但这些都不是本文的主题!我们要讨论的是网络中进程之间如何通信?首要解决的问题是如何唯一标识一个进程,否则通信无从谈起!在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们解决了这个问题,网

java基础——网络编程基础TCP,URL

TCP部分 new socket对象 package ip; /* 1.通过IP地址和域名new InetAddress对象 2.本地回路地址:127.0.0.1 对应localhost,表示本地主机 3.IP地址和端口号接在一起组成一个socket,类似于网络节点 @author zsben @create 2020-01-07 15:34 */ import java.net.InetAddress; import java.net.UnknownHostException; public

python语法基础-网络编程-长期维护

###############    网络编程    ############## ###############    网络编程    ############## ###############    网络编程    ############## ###############    网络编程    ############## ###############    网络编程    ############## 原文地址:https://www.cnblogs.com/andy0816/p/