码迷,mamicode.com
首页 > 其他好文 > 详细

OSI七层模型与TCP/UDP初识(代码待补充,7.31补充)

时间:2019-07-30 23:28:09      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:decode   地址   链路层   链接   类型   电信号   end   socket   listen   

OSI七层模型包括:其作用在于不断地给传输的内容加东西
应用层
表示层
会话层
传输层 UDP/TCP    +端口
网络层 ip协议,      +ip地址
数据链路层 以太网协议 +mac
物理层 电信号

传输层涉及到的:tcp协议:面向链接(打电话),不丢。建立了一个全双工的通道;传输是面向字节流的
                              udp协议:面向无连接(写信),可能会丢。传输是面向报文、数据包的

重点:tcp协议的三次握手,四次挥手
挥手
1客户端先发,申请建立链接
2服务端收到后回馈,发送确认信息
3客户端收到后表示收到
握手
1客户端请求
2服务端说我收到,请稍等
3服务端处理数据,全部结束后,发我已结束,不会丢失
4客户端说,好,那咱断开

tcp与udp下的socket 差一个监听与确认链接的过程

TCP的多人聊天在listen后面在参数表示最大的等待数量,必须一客户端的链接断开了后面的才能进行
UDP的多人聊天如果同时发,服务端回复第一个才会收到第二个人发来的消息

服务端

import socket
#导入socket模块

server = socket.socket()      #创建socket对象

ip_port = (121.195.167.34,8002)   #设置一个ip地址和端口号

server.bind(ip_port)          #绑定ip和端口号

server.listen(3)               #监听ip和端口号
while 1:
    conn,addr = server.accept()   #等待建立连接,前者为建立的连接通道,后者为客户端地址
    while 1:
        from_client_msg = conn.recv(1024)  #通过recv方法,参数是字节(b),1024即为1kb,指一次性接受的消息大小

        print(from_client_msg.decode(utf-8))
        if from_client_msg.decode(utf-8) == 再见:
            break
        send_client_msg = input(服务端说:)
        #conn.send(b‘replay‘.encode(‘utf-8‘))   #回复消息,通过send方法,参数必须是字节类型
        conn.send(send_client_msg.encode(utf-8))
    conn.close()           #关闭通道,通过close方法

#server.close()         #关闭服务器

客户端

import socket
import time
client = socket.socket()   #创建一个socket对象

server_ip_port = (121.195.167.34,8002)  #找ip和端口号

client.connect(server_ip_port)  #利用ip和端口号连接服务器程序
while 1:
    send_server_msg = input(客户端说:)
    if send_server_msg == 再见:
        client.send(send_server_msg.encode(utf-8))
        break
    client.send(send_server_msg.encode(utf-8))     #发消息,用send方法,字节类型
    #client.send(‘你好‘.encode(‘utf-8‘))     #中文
    # client.send(str(time.time()).encode(‘utf-8‘))

    from_server_msg = client.recv(1024)  #通过recv方法,参数是字节(b),1024即为1kb,指一次性接受的消息大小

    print(from_server_msg.decode(utf-8))

client.close()

 

OSI七层模型与TCP/UDP初识(代码待补充,7.31补充)

标签:decode   地址   链路层   链接   类型   电信号   end   socket   listen   

原文地址:https://www.cnblogs.com/shachengcc1/p/11273363.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!