2018年8月14日TCP网络编程及具体代码


静态文件?顾名思义,静态文件就是那些不会改变的文件,例如视频音乐,图片等类似的文件
NT平台:指的是windows NT操作系统,是windows在1993年发布的一个操作系统,Windows NT 3.1是很多Windows历史的开端
***************************************
import 引入如果感觉名字太长的话可以用as代替引入的东西,
import 包名.模块名.变量名 as 别称
下面使用的时候可以直接用别称

from . import 模块名,下面引用的时候需要写
模块名的.变量名/函数名/类型名

************************************
nslookup 域名,这个命令是根据域名查看ip地址
城域网的简称? MAN 
ARP协议?      根据Ip地址获取物理地址的协议
私有地址能互相用吗?可以c类ip可以使用a类ip 的私有地址,如果你的主机足够多的话,
一般只使用c类的私有地址,因为用a类的私有ip地址太多,不好管理

***********************************
在网络上进行网络访问的顺序是先查本地hosts文件中是否有映射,再DNS映射进行访问,如果hosts文件里面有映射关系的话就不再进行DNS域名解析
有时候点一些小广告就会修改本级的hosts文件导致自己会进一些钓鱼的网站

************************************
win中查看所有端口使用情况的命令是:
netstat =ano
查看指定的端口是否被占用的命令是:
netstat -ano|findstr 5040(端口号)
会显示包含5040这个端口的所有数据


************************************
什么是网络?
计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,
通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管
理和协调下,实现资源共享和信息传递的计算机系统。

什么是Ip 有什么特点,有什么类型
ip(Internet Protocol的):网络之间互连的协议也就是为计算机网络相互连接进行通信而设计的协议。
在因特网中,它是能使连接到网上的所有计算机网络实现相互通信的一套规则,
规定了计算机在因特网上进行通信时应当遵守的规则,所谓IP地址就是给每个连接在互联网上的主机分配的一个32位地址
用于标识每一台连接入因特网的主机。
ip地址是32位的二进制,共有5种类型,3种商用
A类地址网络号范围:1.0.0.0---126.0.0.0   A类的私有地址:10.0.0.0---10.255.255.255
127.X.X.X是保留地址,用做循环测试用的
B类地址网络号范围:128.0.0.0---191.255.0.0     B类的私有地址:172.16.0.0---172.31.255.255
C类地址网络号范围:192.0.0.0---223.255.255.0   C类的私有地址:192.168.0.0---192.168.255.255
D类地址范围:224.0.0.0---239.255.255.255   组播地址/多播地址
E类地址范围:240.0.0.0---255.255.255.254   保留和以后拓展功能的地址


什么是端口,特点,类型?
端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。
例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,
端口主要用于确认某一个应用程序的进程,以使信息能够准确地到达指定的程序中,每一个进程都是一种服务。

端口号是从0到65525
自己编程一般用8000以上的端口
因为0-1023一般被用作知名服务器的端口,如ftp,http
8000以下的应用程序要用
开发端口 8000+
总而言之,我们这里所说的端口,不是计算机硬件的I/O端口,而是软件形式上的概念。根据提供服务类型的不同,端口分为
两种,一种是TCP端口,一种是UDP端口。计算机之间相互通信的时候,分为两种方式:一种是发送信息以后,可以确认信息
是否到达,也就是有应答的方式,这种方式大多采用TCP协议;一种是发送以后就不管了,不去确认信息是否到达,这种方式
大多采用UDP协议。对应这两种协议的服务提供的端口,也就分为TCP端口和UDP端口,TCP端口和UDP端口。由于TCP和UDP 两个
协议是独立的,因此各自的端口号也相互独立,比如TCP有235端口,UDP也 可以有235端口,两者并不冲突

学东西要学会3w1h:
what/why/where how

浏览器不是搜索引擎,是文档浏览工具,页面也是文档

扫描二维码关注公众号,回复: 2896790 查看本文章


SSl:安全套接层

win中启用telnet终端的步骤是:在控制面板的卸载程序->启用或关闭windows
功能->telnet客户端前打钩


套接字:不同组件之间的连接的端口

*************************
画图工具要运用熟练,必要的时候可以画一个模型进行知识点的学习,它能帮我们更好地更生动形象地去理解知识

socket和tcp udp关系

Socket是什么呢?套接字
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket
建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装
通过Socket,我们才能使用TCP/IP协议。
Socket是应用层与(传输层)TCP/IP协议族通信的中间软件抽象层,它是一组接口
实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。
所以说,Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,
从而形成了我们知道的一些最基本的函数接口,比如create、 listen、connect、accept、send、read和write等等

socket的位置如下图所以:

tcp建立连接的时候三次握手和结束时的四次挥手:
sequence number 序列号 seq:确认客户端的位置,确认远程服务器的存活,这是第一次客户端给服务器发送的
seq表示相应给谁的
ack 

当用网络编程编写一个聊天室时,客户端用的是动态端口,但是服务器端必须要指定端口,因为只有指定端口了
才方便客户端去连接。

有时候代码不报错但是颜色会变灰,鼠标放上去会出现这样的提示:the core is unreachable,
这个提示表示这句话是多余的,程序什么时候也不会执行到这一句。

使用socket实现的客户端服务器网络聊天功能的具体代码:

服务端:

"""
TCP服务端模块
"""
#引入需要的模块
import socket

#定义连接信息
HOST = ""
PORT = 8080
ADDRESS = (HOST, PORT)   #地址,地址是一个元组

#定义一个读写数据的缓冲字节大小
BUFFER = 1024

#创建一个TCP服务端套接字对象
#tcp_server = socket.socket()
tcp_server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
                    #family默认为family=AF_INET, type=SOCK_STREAM, proto=0
                    # 地址家族中面向网络的套接字对象,支持[IPV4]   连接类型;面向对象   传输协议:使用默认就好

#绑定主机端口
tcp_server.bind(ADDRESS)

#监听端口;参数表示排队的客户端
tcp_server.listen(5)

while True:
    #等待客户端的接入,建立连接
    print("waiting for connet...")
    server_socket, addr = tcp_server.accept()          #accept的返回值是两个,一个是socket,一个是addr
    print("client already connet! welcome to server:", addr)

    while True:
        #发送一个欢迎消息给客户端
        info = input("向客户端发送的消息是:")
        server_socket.send(info.encode("utf-8"))    #编码方式可以变

        #接收客户端发来的消息
        msg = server_socket.recv(BUFFER)
        print("client:", msg.decode("utf-8"))   #编码方式可以变
        if msg == b"BYE":
            #关闭套接字,释放资源
            server_socket.close()
            break

#程序结束,关闭服务端,这个写上不会报错,但是颜色会变灰,代表永远也不是执行这一句
#tcp_server.close()

客户端:

"""
TCP客户端
"""

#引入需要的模块
import socket

#定义连接信息
TARGET_HOST = "192.168.13.7"
TARGET_PORT = 8080
TARGET_ADDRESS = (TARGET_HOST, TARGET_PORT)
BUFFER = 1024

#创建一个TCP套接字对象
tcp_client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

#连接指定的主机
tcp_client.connect(TARGET_ADDRESS)

#收发消息
while True:
    #接收服务器消息
    msg = tcp_client.recv(BUFFER)
    print("server:", msg.decode("utf-8"))

    #向服务器发送消息
    info = input("请输入您要发送的消息:")
    tcp_client.send(info.encode("utf-8"))
    if info == "BYE":
        #关闭套接字
        tcp_client.close()
        break
print("客户端退出")

猜你喜欢

转载自blog.csdn.net/qq_40994972/article/details/81674553