美文网首页
udp和tcp流程概述

udp和tcp流程概述

作者: HUIEcho | 来源:发表于2018-04-22 22:22 被阅读0次

    udp

    端口号

    知名端口:系统使用的端口, 范围0-1023

    动态端口:程序员给应用程序设置的端口,范围1024-65535,提示:如果程序员没有给程序设置端口号那么系统会自动在1024-65535找一个空闲端口号去设置

    socket

    翻译中文就是套接字,可以理解成数据的搬运工,负责把数据从一方传递给另外一方,不同电脑之间进程通信使用的工具就是socket,也称为插座,发送数据的时候需要准备一个插座,对方接收数据也要准备一个插座

    创建socket:

    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    绑定端口bind:绑定端口的时候不需要指定ip地址,因为需要兼容多个网卡的情况

    udp_socket.bind(("", 9090))

    发送数据格式:发送数据 window 网络调试助手使用gbk解码,乌班图网络调试助手使用utf-8解码

    udp_socket.sendto(send_data, ('localhost', 端口号))

    接收数据格式: 服务端和客户端必须在同一网段

    recv_data, ip_port = udp_socket.recvfrom(1024)

    关闭:

    udp_socket..close()

    发送广播消息

    首先,创建socket

    udp_socket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, True)

    udp_socket.sendto("大家好,我叫小于同学,多多关照!".encode("gbk"), ("255.255.255.255", 9090))

    tcp

    客户端

    创建:

    tcp_client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

    和服务端建立连接:

    tcp_client_socket.connect(("192.168.107.160", 9090))

    发送数据

    tcp_client_socket.send()

    接收数据

    recv_data = tcp_client_socket.recv(1024)

    recv_content = recv_data.decode('utf-8')

    关闭

    tcp_client_socket.close()

    服务端

    创建socket(同上)

    程序退出,立即释放端口:

    tcp_server_socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True)

    绑定端口

    tcp_client_socket.bind(('ip地址', 端口号))

    设置监听——把主动套接字改成被动套接字, 被动套接字只能接收客户端的连接请求,不能收发消息;128: 最大等待连接数

    tcp_server_socket.listen(128)

    处理客户端的连接请求

    service_client_socket, ip_port = tcp_server_socket.accept()

    接收客户端信息——关闭socket,recv接收的数据长度为0

    recv_data = service_client_socket.recv(1024)

    发送数据(回复客户端)

    service_client_socket.send('ok'.encode('utf-8'))

    终止和客户端的服务(两个socket均需要关闭)

    service_client_socket.close()

    tcp_server_socket.close()

    相关文章

      网友评论

          本文标题:udp和tcp流程概述

          本文链接:https://www.haomeiwen.com/subject/wljhlftx.html