Python网络编程02----基于UDP的Python简易服务器

UDP 服务器不是面向连接的,所以不用像 TCP 服务器那样做那么多设置工作。事实上,并不用设置什么东西,直接等待进来的连接就好了.

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

服务器端:

from socket import *
from time import ctime

UdpSock=socket(AF_INET,SOCK_DGRAM)                         #参数SOCK_DGRAM对应的是UDP协议
name=gethostname()
port=12348

UdpSock.bind((name,port))
while True:
    print("等待接入")
    data,addr=UdpSock.recvfrom(1024)                       #与TCP的区别。因为不需要事先建立链接,因此需要获取客户端的地址,并随时按照地址发送消息
    print(str(addr)+"已接入")
    data=(data.decode("UTF-8")+ctime()).encode("UTF-8")
    UdpSock.sendto(data,addr)                              #向客户端发送消息
UdpSock.close()

客户端:

#coding=UTF-8
from socket import *
import sys
reload (sys)
sys.setdefaultencoding('utf8')   

host="192.168.1.66"
port=12348
UdpSock=socket(AF_INET,SOCK_DGRAM)

while True:
    data=raw_input("快打字:")
    if not data:
        break
    UdpSock.sendto(data,(host,port))                       #无需connect,直接通过主机ip和端口访问主机
    data,addr=UdpSock.recvfrom(1024)
    print(data.decode("UTF-8"))
UdpSock.close()

上一讲:Python网络编程01-----基于TCP的Python简易服务器

下一讲

如果有什么疑问欢迎到我的微信公众号提问~

时间: 2024-08-08 17:01:13

Python网络编程02----基于UDP的Python简易服务器的相关文章

Python网络编程02/基于TCP协议的socket简单的通信

目录 Python网络编程02/基于TCP协议的socket简单的通信 1.昨日内容回顾 2.socket 2.1 socket套接字 2.2 基于TCP协议的socket简单通信 Python网络编程02/基于TCP协议的socket简单的通信 1.昨日内容回顾 1.单播:单独联系某一个人 2.广播:给所有人发送消息(群发) 3.比特流:bit就是0101跟水流一样的源源不断的发送01010101 4.以太网协议:将数据进行分组:一组称之为一帧,数据报 head|data head:18字节:

网络编程之基于UDP协议套接字

1.UDP协议介绍(数据报协议) UDP协议不同于TCP,通信时,它不需要事先建立双向链接,并且不区分客户端先启动还是服务端前起,工作原理:基于udp协议传输的信息,协议会将数据自动加上自定义的报头,这样每一个数据都是一个数据报,而流失协议由于自身优化算法,产生粘包现象,udp不会产生粘包现象,并且发出的消息可以为空,因为就算你发的是空消息,协议也会给你的空消息加上一段自定义报头,所以它还是一个数据报,而tcp协议在这里则不能发空消息,一旦发空消息,接收方会一直处于收的状态,发送方发完空后会一直

Linux网络编程:基于UDP的程序开发回顾篇

基于无连接的UDP程序设计 同样,在开发基于UDP的应用程序时,其主要流程如下: 对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流程基本差不多.对比面向连接的TCP程序,服务端少了listen和accept函数.前面我们也说过listen函数最主要的作用就是将一个socket套接字描述符转为被动监听模式,然后调用accept主要是用于等待客户端(用connect)来连接服务器.connect函数不仅可以用于流式套接字还可用于数据报式套接字.在TCP中,客户端调用connect函数

python网络编程(基于twisted的客户端编程)

[ 声明:版权所有,欢迎转载,请勿用于商业用途. 联系信箱:feixiaoxing @163.com] python的twisted比较有意思,既可以做server方面的编程,也可以做client方面的编程.关于这方面的编程,最简单的例子就是echo. client 代码如下, #!/usr/bin/python from twisted.internet.protocol import Protocol, ClientFactory from sys import stdout from tw

Python网络编程之基于socket实现聊天机器人

通过socket实现局域网内的聊天工具. service.py文件如下: #!/usr/bin/env python # _*_ coding:utf-8 _*_ import socket # 创建一个socket对象 sk = socket.socket() # 绑定允许连接的IP地址和端口 sk.bind(('127.0.0.1', 6053, )) # 服务端允许起来之后,限制客户端连接的数量,如果超过五个连接,第六个连接来的时候直接断开第六个. sk.listen(5) while T

Python网络编程之基于socket实现文件上传

粘包 在实现发送文件功能之前我们先来理解下粘包的问题,下面有两张图,我觉得很清晰的就可以理解到了. 正常情况下发送文件 第一步: 客户端把获取到的文件总大小(size=65426)先放到缓冲区,然后发送给服务端 第二步: 此时客户端接收到的文件总大小就是65426 粘包的问题下发送文件 第一步: 客户端把获取到的文件总大小(size=65426)先放到缓冲区 第二步: 此时可能由于文件读取太快,导致缓存区的内容还没有发送到服务端,客户端就把读取到的文件内容(hello)也放到缓存区: 第三步: 

python 网络编程-02 多进程的交互案例

server.py import socket from threading import Thread def Server(): server = socket.socket() server.bind(('127.0.0.1', 8000)) server.listen(5) while True: conn, addr = server.accept() Thread(target=talk,args=[conn,]).start() def talk(connect): while T

Python网络编程小例子:使用python获取网站域名信息

Whois简介 whois(读作"Who is",非缩写)是用来查询域名的IP以及所有者等信息的传输协议.简单说,whois就是一个用来查询域名是否已经被注册,以及注册域名的详细信息的数据库(如域名所有人.域名注册商).通过whois来实现对域名信息的查询.早期的whois查询多以命令列接口存在,但是现在出现了一些网页接口简化的线上查询工具,可以一次向不同的数据库查询.网页接口的查询工具仍然依赖whois协议向服务器发送查询请求,命令列接口的工具仍然被系统管理员广泛使用.whois通常

【Java网络编程】基于UDP的聊天通信

使用udp协议,写一个基于命令行的聊天软件:客户端跟服务端分别在命令行启动之后,客户端和服务器端可以互相发送数据. 一.创建线程 sendThread 和receiveThread 1 package com.fhcq.chat; 2 3 //双工的聊天程序 4 //可以发送数据,同时也可以等待接收数据 5 //需要使用多线程来实现 6 7 public class QICQDemo { 8 9 public static void main(String[] args) { 10 // TOD