网络编程[第二篇]基于udp协议的套接字编程

udp协议下的套接字编程

一.udp是无链接的    不可靠的

而上篇的tcp协议是可靠的,会有反馈信息来确认信息交换的完成与否

基于udp协议写成的服务端与客户端,各司其职,不管对方是否接收到信息,只需自己发送了即可

二.客户端

import socket

#买手机  --  套接字家族 | 端口协议
phone = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#服务端地址
ip_port = (‘127.0.0.1‘,8001)
#实现多次发送信息
while True:
    #自定义一条信息
    msg = input(‘输入一条信息:‘)
   #若信息为空,会导致程序卡死,用if判断跳过此情况
    if not msg:
        continue
    # 接通电话后发信息  指定数据 和 服务端地址
    phone.sendto(msg.encode(‘utf-8‘),ip_port)
    print(‘向服务端发送信息:‘,msg)
    #接收反馈信息  指定一次接收的量
    data,addr = phone.recvfrom(10)
    print(‘成功接收到服务端反馈信息 ‘)
#关机
phone.close()

三.服务端

import socket

#买手机  --  套接字家族 | 端口协议
phone = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

#买电话卡  --  监听一个地址- ip | 端口号
phone.bind((‘127.0.0.1‘,8001))

#多次接发信息  
while True:
    #电话接通后接收信息  指定一次接收信息的数量
    #返回数据 和 客户端地址
    data,addr = phone.recvfrom(10)
    print(‘接受到客户端信息为: ‘,data)
    #接收到信息后,反馈给client端一个信息,以告诉他已成功接收
    phone.sendto(data,addr)
    print(‘成功向客户端发送一个反馈信息‘)

    #完成一切操作后关掉link,再关机
link.close()
phone.close()

四.总结——简化

客户端:

cs = socket()   # 创建客户套接字
comm_loop:      # 通讯循环
    cs.sendto()/cs.recvfrom()   # 对话(发送/接收)
cs.close()                      # 关闭客户套接字

服务端:

1 ss = socket()   #创建一个服务器的套接字
2 ss.bind()       #绑定服务器套接字
3 inf_loop:       #服务器无限循环
4     cs = ss.recvfrom()/ss.sendto() # 对话(接收与发送)
5 ss.close()                         # 关闭服务器套接字

原文地址:https://www.cnblogs.com/xxp1624/p/11241611.html

时间: 2024-09-30 02:00:36

网络编程[第二篇]基于udp协议的套接字编程的相关文章

网络编程(四)——基于udp协议的套接字socket、socketserver模块的使用

基于udp协议的套接字.socketserver模块 一.UDP协议(数据报协议) 1.何为udp协议 不可靠传输,"报头"部分一共只有8个字节,总长度不超过65,535字节,正好放进一个IP数据包. 以太网头 ip头                      udp头                            数据                                            tcp协议(流式协议) 2.udp协议的特点 (1)传输数据以数据报的形

【UNIX网络编程(二)】基本TCP套接字编程函数

基于TCP客户/服务器程序的套接字函数图如下: 执行网络I/O,一个进程必须做的第一件事就是调用socket函数,指定期望的通信协议类型. #include <sys/socket.h> int socket(int family, int type, int protocol);/*返回值:若成功则为非负描述符,若出错则为-1*/ socket函数成功时返回一个小的非负整数值,它与文件描述符类似,把它称为套接字描述符,简称sockfd.family参数指明协议族,被称为协议域.type参数指

什么是 socket?简述基于 tcp 协议的套接字通信流程?

Socket的英文原义是"孔"或"插座".通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄, 可以用来实现不同虚拟机或不同计算机之间的通信. 在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务. 基于tcp 协议的套接字通信流程: 1). 服务器先用 socket 函数来建立一个套接字,用这个套接字完成通信的监听. 2). 用 bind

UNIX网络编程笔记(3)—基本TCP套接字编程

基本TCP套接字编程 主要介绍一个完整的TCP客户/服务器程序需要的基本套接字函数. 1.概述 在整个TCP客户/服务程序中,用到的函数就那么几个,其整体框图如下: 2.socket函数 为了执行网络I/O,一个进程必须要做的事情就是调用socket函数.其函数声明如下: #include <sys/socket.h> int socket(int family ,int type, int protocol); 其中: family:指定协议族 type:指定套接字类型 protocol:指

python3(socket 实现udp,tcp套接字编程)

#coding=utf-8 #客户端程序TCP 连接 import socket s=socket.socket(socket.AF_INET,socket.SOCK_STREAM) s.connect(('127.0.0.1',9999)) print(s.recv(1024)) for data in ['Michael','Tracy','Sarah']: s.send(data.encode()) print(s.recv(1024)) s.send(b'exit') #coding=u

基于tcp协议的套接字通信:远程执行命令

1.struct模块 #1.把整型数字转成bytes类型 #2.转成的bytes是固定长度的 import struct import json header_dic = { 'total_size': 31222222222121, 'md5': '123svsaef123sdfasdf', 'filename': 'a.txt' } #序列化:内存中的数据结构---->转成一种中间格式(字符串)---->存到文件中 header_json=json.dumps(header_dic) pr

socket 套接字编程

目录 SOCKET 一.基于TCP协议的socket套接字编程 1.1 什么是socket 1.2 套接字分类 1.3 套接字工作流程 二.基于udp协议的套接字编程 三.UDP协议和TCP协议的区别 3.1 udp协议的特点 3.2 UDP和TCP的区别 SOCKET 一.基于TCP协议的socket套接字编程 1.1 什么是socket ? socket是应用层和传输层之间的一个抽象层,我们经常把socket称为套接字,它是一组接口,把TCP/IP层的复杂操作抽象为几个简单的接口供应用层调用

基于TCP协议的socket套接字编程

基于TCP协议的socket套接字编程 一.什么是Socket Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口.在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议. 所以,我们无需深入理解tcp/udp协议,socket已经为我们封装好了,我们只需要遵循socket的规定去编程,写出的程序自然就是遵循tcp/udp标准的. [ 注意:也有

4-socket套接字编程

socket套接字编程 目标:根据socket模块提供的接口函数,进行组合使用完成基于tcp或者udp的网络编程. 套接字:完成上述目标的一种编程手段,编程方案. 套接字分类: 流式套接字(sock_stream):传输层基于tcp协议的套接字编程方案. 数据报套接字(sock_dgram):传输层基于udp的套接字编程. 底层套接字(sock_ram):访问底层协议的套接字编程. *面向连接的传输--tcp协议--可靠的--流式套接字 *面向无连接传输--dhp协议--不可靠的--数据报套接字