1.服务器端

UDP服务器建立与TCP相类似,具体比较如下:

补充下,第四步:不必使用listen还有accept函数。

具体代码如下:(设置socket选项省略)

import socket
from time import ctime HOST=''
PORT=21004
BUFSIZE=1024 udpSerSock=socket.socket(socket.AF_INET,socket.SOCK_DGRAM) #建立socket
udpSerSock.bind((HOST,PORT)) #将socket与端口绑定,这个端口是连接客户端与服务器 while True:
print 'waiting for message...'
data, addr = udpSerSock.recvfrom(BUFSIZE)
udpSerSock.sendto('[%s] %s'%(ctime(),data),addr)
print '...received from and returned to:',addr
print ctime(),' ',data
udpSerSock.close()

2.客户端

1)SOCK_DGRAM

2)因为UDP是无连接的,没有使用connect函数,我们无法知道数据是否已经发送结束。

import socket
HOST ='localhost'
PORT = 21004
BUFSIZE =1024 udpCliSock =socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 建立UDP socket while True:
data=raw_input('Enter a string that you want to send: ')
if not data:
break
udpCliSock.sendto(data,(HOST,PORT)) # 发送到服务器端口
data,(HOST,PORT)=udpCliSock.recvfrom(BUFSIZE) # 接收服务器数据
if not data:
break
print data
udpCliScok.close()

结果:

客户端

服务器端:

由上图再结合TCP结果,可以发现每次客户端发送数据给服务器后,(客户端会进行检查吗?),服务器只管收到数据,并返回给客户端,不管对方接收到了没有,都只进行接收下一段数据。(waiting for message…)

参考:http://www.cnblogs.com/xiaowuyi/archive/2012/08/06/2625509.html

http://blog.sina.com.cn/s/blog_6b60259a0101ftxx.html

python 网络编程(四)---UDP服务端客户端的更多相关文章

  1. python网络编程:socket、服务端、客户端

    本文内容: socket介绍 TCP: 服务端 客户端 UDP: 服务端 客户端 首发时间:2018-02-08 01:14 修改: 2018-03-20 :重置了布局,增加了UDP 什么是socke ...

  2. [javaSE] 网络编程(TCP服务端客户端互访阻塞)

    客户端给服务端发送数据,服务端收到数据后,给客户端反馈数据 客户端: 获取Socket对象,new出来,构造参数:String的ip地址,int的端口号 调用Socket对象的getOutputStr ...

  3. python网络编程-TCP服务端的开发

    #TCP服务端开发 2 #方法说明 3 """ 4 bind(host,port)表示绑定端口号,host是ip地址,ip地址一般不进 行绑定,表示本机的任何一个ip地址 ...

  4. TCP/IP网络编程之多进程服务端(二)

    信号处理 本章接上一章TCP/IP网络编程之多进程服务端(一),在上一章中,我们介绍了进程的创建和销毁,以及如何销毁僵尸进程.前面我们讲过,waitpid是非阻塞等待子进程销毁的函数,但有一个不好的缺 ...

  5. TCP/IP网络编程之多线程服务端的实现(二)

    线程存在的问题和临界区 上一章TCP/IP网络编程之多线程服务端的实现(一)的thread4.c中,我们发现多线程对同一变量进行加减,最后的结果居然不是我们预料之内的.其实,如果多执行几次程序,会发现 ...

  6. python网络编程,通过服务名称和会话类型(tcp,udp)获取端口号,简单的异常处理

    作为一个php程序员,同时有对网络方面感兴趣,php就比较蛋疼了,所以就抽了些时间看python 之前学python基础因为工作原因,断断续续的看了个基础,差不多是可以写代码了 最近在看<pyt ...

  7. 1、简述在java网络编程中,服务端程序与客户端程序的具体开发步骤?

    网络编程分为UDP通信和TCP通信 UDP协议: 发送端:1.创建DatagramSocket对象.2.创建DatagramPacket对象,并封装数据.3.发送数据.4.释放 资源. 接收端:1.创 ...

  8. 03Python网络编程系列之服务端

    # 这里边是一个定义了服务端的一系列函数,是Python网络编程这本书第七章的第一个例子.# 这是供后边函数进行调用了,然后我们来进行研究网络的单线程编程,多线程编程.异步网络编程等.# 导入网络编程 ...

  9. python网络编程:UDP方式传输数据

    UDP --- 用户数据报协议(User Datagram Protocol),是一个无连接的简单的面向数据报的运输层协议. UDP不提供可靠性,它只是把应用程序传给IP层的数据报发送出去,但是并不能 ...

  10. Java网络编程(TCP协议-服务端和客户端交互)

    客户端: package WebProgramingDemo; import java.io.IOException; import java.io.InputStream; import java. ...

随机推荐

  1. org.hibernate.LazyInitializationException

    1.org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role: com.c ...

  2. spoj 346

    当一个数大于等于12  那分别处以2, 3, 4之后的和一定大于本身    但是直接递归会超时    然后发现有人用map存了   膜拜..... #include <cstdio> #i ...

  3. firefly的环境搭建(2013年9月25日最新,win下最详图文)

    源地址:http://www.9miao.com/question-15-53785.html 一.安装PythonFirefly是采用Python编写的高性能.分布式游戏服务器框架,所以使用Fire ...

  4. Fiddler 日志

    Fiddler 日志(Logging) 在开发扩展插件及编写FiddlerScript时对调试程序非常有用. 1.输出日志 在FiddlerScript脚本中,你可以这样输出输出日志: Fiddler ...

  5. 【转】Java自动装箱、拆箱、缓冲池

    JDK5以后 Integer a = 3;              这是自动装箱int     i = new Integer(2); 这是自动拆箱就是基本类型和其对应的包装类型在需要的时候可以互相 ...

  6. SQLite数据类型详解

    一.存储种类和数据类型: SQLite将数据值的存储划分为以下几种存储类型: 复制代码代码如下:      NULL: 表示该值为NULL值.      INTEGER: 无符号整型值.      R ...

  7. Linux 阿里云挂载新分区

    阿里云服务器可以自己购买数据盘并挂载使用,虽然官方也提供了挂载的教程,但是还是有些朋友不清楚其中的细节,为此,我在这里来给大家分享一下详细的挂载办法. 工具/原料 已经购买开通阿里云服务器,并且在开通 ...

  8. 【Oracle连接字符串】【Oracle Net Manager 服务命名配置】【PL/SQL 登陆数据库】

    连接数据库的几个重要参数: 1. 登陆用户名:user: 2. 登录密码:password: 3. 存放数据库的服务器地址(server_ip)和端口(server_port): 4. 数据库名(db ...

  9. SSH应该使用密钥还是密码?

    关于SSH,几乎每个人都同意密钥要优于密码,更安全,并且更先进,但我并不同意这个观点. 虽然密钥的确可以更好,但它有着还没被意识到的严重风险,并且我认为比得到妥善管理的密码更不安全. 通常密钥更好的理 ...

  10. Java基于Servlet过虑器