一个简单的UDP协议的通信

Server

import socket  #引入socket模块

#建立一个UDP的服务端
udpServer = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
#127.0.0.1 - 127.255.255.254 都属于访问本地  但是都是用 127.0.0.1
udpServer.bind(("10.0.144.160",8244))  #将server绑定一个ip和端口号,以便客户端访问
while True:
    print("x")
    data,addr = udpServer.recvfrom(1024)   # recvfrom()函数,是UDP专用的函数,用于接收数据,返回远端的字节数和ip地址,或者发生错误时返回-1
    print("消息为:",data.decode("utf-8"),"地址为",addr)

Client:

import socket
udp = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
while True:
    data = input("请输入你要说的话")
    udp.sendto(data.encode("utf-8"),("10.0.144.160",8244))  #sendto UDP常用的函数,向某一地址发送数据

可以看到,无论是客户端还是服务器端,都使用了一条语句:

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

那么这行代码是什么意思呢

  这里首先要搞清楚什么是套接字,套接字(scoket)是一种具有通信端口的计算机网络数据结构,大概相当于电话的插口,没有它就没办法通信。

  套接字主要分为两种:基于文件型和基于网络的

  第一种是AF_UNIX,基于文件的unix系统通信,由于两个进程同时运行在一个机器上,两个进程之间的socket便是基于文件系统而不是基于网络系统,文件系统可以被不同的进程所访问,不过这部分我暂时还没接触, 等以后运用到再详细研究。

  第二种是AF_INET,基于网络的,即internet。是ipv4套接字,比之ipv6,传输更便捷。

  socket.SOCK_DGRAM 代表的是UDP协议,socket.SOCK_STREAM代表TCP协议

  bind()将创建的套接字绑定一个ip,类似于实例化吧,把虚的东西切实的绑定一个地址。

第一次写博客,见谅见谅。

时间: 2024-10-12 20:40:14

一个简单的UDP协议的通信的相关文章

JAVA基础知识之网络编程——-基于UDP协议的通信例子

UDP是一种不可靠的协议,它在通信两端各建立一个socket,这两个socket不会建立持久的通信连接,只会单方面向对方发送数据,不检查发送结果. java中基于UDP协议的通信使用DatagramSocket类的receive和send方法即可,但消息需要通过一个特定的类封装(DatagramPacket) 下面是一个基于UDP协议的通信的例子, 服务器端, 1 package udp; 2 3 import java.io.IOException; 4 import java.net.Dat

工位上的Python——一个简单的UDP广播实例

最近状态神勇,头脑清晰,趁此良机,多多学习,多多看书,把以前看不懂的地方重新看了下,收获匪浅,现把两个简单的小例子献给大家: 先是一个简单的UDP广播接收的小服务器,使用UDP广播,需要注意下协议的使用,已经最最重要的socket选项的设置,设置为传说中的"socket.SO_BROADCAST",不需要有监听,接收客户端的消息使用recvfrom,发送消息使用sendto: 代码如下: !/usr/bin/env python  #coding:utf-8 import socket

Python中的端口协议之基于UDP协议的通信传输

UDP协议: 1.python中基于udp协议的客户端与服务端通信简单过程实现 2.udp协议的一些特点(与tcp协议的比较) ------------------------------------------------------------------------------------------------------------------------------------- 一.UDP协议:OSI七层协议中的传输协议的一种(另外一种tcp协议),他们都是一种端口协议 与TCP协

windows网络编程-C语言实现简单的UDP协议聊天

与TCP协议下编写服务端程序代码类似,但因为是无连接的形式,所以不需要监听. 这次,我用了一点不同的想法:我建立一个服务端,用了两个端口和两个套接字,把服务端作为一个数据转发的中转站,使得客户机之间进行UDP协议下的通信. 服务端代码: /** * UDP/IP 服务器端 Server.c */ #include <winsock2.h> #include <stdio.h> #include <string.h> #include <time.h> #de

python网络编程基础--socket的简介,以及使用socket来搭建一个简单的udp小程序

socket介绍: socket(简称套接字),是进程间通讯的一个工具,他能实现把数据从一方传输到另一方,完成不同电脑上进程之间的通讯,它好比数据的搬运工.socket应用:不夸张来说,只要跟网络相关的应用程序或者软件都使用到了socket, 比如:微信,qq等使用socket创建udp网络程序的流程:1,创建客户端套接字2,发送/接收数据3,关闭套接字使用程序展现流程 :(使用的 ide为pycharm):1,首先创建socket,在 Python 中 使用socket 模块的函数 socke

JointCode.Shuttle,一个简单高效的跨 AppDomain 通信的服务框架

JointCode.Shuttle 是一个用于 AppDomain 间通信的服务架构. 1. 什么情况下使用 JointCode.Shuttle 在 .net / mono 开发中,一般不太需要使用额外的 AppDomain,但在一些 特定情况下,让代码运行在新的 AppDomain 中也许是一个好的选择. 当代码需要跨越 AppDomain 边界访问另一个 AppDomain 时,便产生了跨 AppDomain 通信的问题,JointCode.Shuttle 正是专为此目的而开发的一个服务框架

java 网络编程 基于UDP协议的通信

使用UDP协议,写一个能在同一界面发送消息,并显示消息的聊天软件. 代码实现如下: package com.abel.socket; import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.util.Scanner; /* * 多线程在一个界面同时完成发送接收 * 1 发送send * ***创建

一个简单的通用协议测试软件

在一个公司看到的一个协议测试系统,用C#实现,然后在里面可以按照自己的想法完全自定义字段属性什么的. 之前老是调试服务器与客户端,每次都为了协议的事调试半天,两边都要配人,很影响效率,最近加入一家公司又听闻此事重演,有心想做这样的一个测试软件,这个软件只是用来调试协议,提供测试数据,并显示返回的测试数据. 考虑到PC上写程序好像确实C#容易些,不过协议解析之前用python搞过,有意向将之结合,C#做一些界面,python完成自定义协议实现,初步实现tcp,http两种,协议字段初步考虑用xml

MiS603开发板 第十四章 UDP协议网络传输

作者:MiS603开发团队 日期:20150911 公司:南京米联电子科技有限公司 论坛:www.osrc.cn 网址:www.milinker.com 网店:http://osrc.taobao.com EAT博客:http://blog.chinaaet.com/whilebreak 博客园:http://www.cnblogs.com/milinker/ MiS603开发板 第十四章 UDP协议网络传输 本实验将实现FPGA 芯片和PC 之间进行千兆以太网数据通信, 通信协议采用Ether