码迷,mamicode.com
首页 > 其他好文 > 详细

一个简单的UDP协议的通信

时间:2017-08-24 22:34:57      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:计算机网络   bsp   服务器   ipv6   cli   实例   nbsp   创建   网络系统   

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,类似于实例化吧,把虚的东西切实的绑定一个地址。

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

 

一个简单的UDP协议的通信

标签:计算机网络   bsp   服务器   ipv6   cli   实例   nbsp   创建   网络系统   

原文地址:http://www.cnblogs.com/xiao38245/p/7425268.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!