socket本地模拟UDP 服务器+客户端(三)

UDP:

TCP是建立可靠连接,并且通信双方都可以以流的形式发送数据。相对TCP,UDP则是面向无连接的协议。

使用UDP协议时,不需要建立连接,只需要知道对方的IP地址和端口号,就可以直接发数据包。但是,能不能到达就不知道了。

虽然用UDP传输数据不可靠,但它的优点是和TCP比,速度快,对于不要求可靠到达的数据,就可以使用UDP协议。

服务端程序:

#   1 创建套接字,并绑定到当地地址 socket,bing
#  2 直接接收数据从buffer。Recvfrom(),这个函数接受到数据,和#sender的地址(主机号,端口号),当然也可以发送数据到客户端,用#sendto(data,addr)
#   3 关闭套接字 close()
#   伪代码:
Ss=socket()    #创建套接字
ss.bind()      #绑定
inf_loop:      #无限循环
ss.recvfrom()/sendto()  #对话
ss.close()      #关闭套接字
#我的程序:
import socket

s = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
s.bind((‘127.0.0.1‘,9998))
print(‘Bind up on 9999......‘)

while 1:
    data,addr = s.recvfrom(1024)
    print(‘Receive from %s:%s.....‘%addr)           #addr为一个元组 ‘127.0.0.1‘:9999
    s.sendto(b‘Hello,%s‘+data,addr)                 #s.sendto(data[, flags], address)
    #或者 s.sendto((‘Hello, %s!‘ % data.decode(‘utf-8‘)).encode(‘utf-8‘), addr)
    #或者 s.sendto(b‘ddddddd‘,addr)

客户端程序:

#   1 创建套接字,socket
#   2 进入循环,发送接收数据 sendto ,recvfrom
#   3 关闭套接字 close()
#   伪代码:
Cs=socket()   #创建
Comm_loop:   #循环接收发送
Cs.sendto()/recvfrom() #对话
Cs.close()     #关闭
#我的程序:
import socket

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

for data111 in [b‘chenhang‘,b‘wangyadan‘,b‘wust‘,b‘hustwb‘]:
    s.sendto(data111,(‘127.0.0.1‘,9998))
    print(s.recv(1024).decode(‘utf-8‘))

s.close()
时间: 2024-10-13 00:01:14

socket本地模拟UDP 服务器+客户端(三)的相关文章

【windows socket+UDP服务器客户端】

Windows Socket+UDP服务器客户端 Winsock是 Windows下套接字标准.                    1.UDP socket编程:          UDP(用户数据报协议)是一个无连接,不可靠的数据传输,其特点是简单,快捷.相比与TCP,UDP不需要建立连接(不需connect.accept函数),数据发送接收之后,不需要终止连接.基于UDP的程序,避免了TCP运行的开销,在效率与速度上具有更好的表现.          UDP是无连接的,可能会有数据的丢失

运用socket实现简单的服务器客户端交互

Socket解释: 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket. Socket的英文原义是“孔”或“插座”.作为BSD UNIX的进程通信机制,取后一种意思.通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信.在Internet上的主机一般运行了多个服务软件,同时提供几种服务.每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务.Socket正如其英文原意

C#网络编程系列文章(五)之Socket实现异步UDP服务器

原创性声明 本文作者:小竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 转载请注明出处 本文介绍 在.Net中,System.Net.Sockets 命名空间为需要严密控制网络访问的开发人员提供了 Windows Sockets (Winsock) 接口的托管实现.System.Net 命名空间中的所有其他网络访问类都建立在该套接字Socket实现之上,如TCPClient.TCPListener 和 UDPCl

C#网络编程系列文章(六)之Socket实现同步UDP服务器

原创性声明 本文作者:小竹zz 本文地址http://blog.csdn.net/zhujunxxxxx/article/details/44258719 转载请注明出处 本文介绍 在.Net中,System.Net.Sockets 命名空间为需要严密控制网络访问的开发人员提供了 Windows Sockets (Winsock) 接口的托管实现.System.Net 命名空间中的所有其他网络访问类都建立在该套接字Socket实现之上,如TCPClient.TCPListener 和 UDPCl

socket编程:简单UDP服务器/客户端编程

对于之前的TCP协议而言,他是可靠的字节流传输,而在socket编程中,在不需要保证数据传输正确安全的情况下.或者由用户自己完成传输确认情况/服务端客户端自己实现数据传输.套接字编程也提供了UDP协议的方法. 基于UDP(不是面向连接)的socket编程,分为客户端和服务器端. 客户端的流程如下: (1)创建套接字(socket) (2)和服务器端进行通信(sendto) (3)关闭套接字 因为在socket编程中,UDP是针对数据报的数据传输,所以socket专门定义了UDP所使用的函数接口.

Windows socket c++ TCP UDP 简单客户端 vs2013

socket 主要是网络中进程之间的通信,起源于Unix,而"一切皆可文件"的思想一样可以用在socket上,即 打开 -> 读写 -> 关闭. int socket(int domain, int type, int protocol):(服务端 & 客户端) socket函数对应于普通文件的打开操作.普通文件的打开操作返回一个文件描述字,而socket()用于创建一个socket描述符(socket descriptor),它唯一标识一个socket. 这个so

UDP服务器/客户端代码示例

UDP服务器代码: 1 #include <errno.h> 2 #include <string.h> 3 #include <stdlib.h> 4 #include <sys/types.h> 5 #include <sys/socket.h> 6 #include <netinet/in.h> 7 #include <arpa/inet.h> 8 #include <iostream> 9 10 usi

socket编程之----UDP服务器

与面向连接的协议相比,面向无连接协议极为不同.其中一个重要的不同点就是客户端与服务器之间不必建立连接. 对于UDP套接字编程而言,服务器创建套接字后,调用bind()函数将套接字与准备接收数据的接口绑定在一起.和TCP编程不同的是,应用程序不必调用 listen()和accept()函数等待客户端的连接.而只需要等待接收数据了.开发UDP套接字应用程序,有两个重要的函数sendto()和 recvfrom().服务器采用recvfrom()来接收来自客户端的数据报,并获得客户端的端地址,之后向客

socket本地模拟服务器+客户端(二)

建立两个py文件,分别打开两个cmd界面,即可进行通信.服务器端运用多进程,连续不断的处理从客户端接收到的数据:客户端通过一个list不断给客户端发送数据. (每个连接都必须创建新线程(或进程)来处理,否则,单线程在处理连接的过程中,无法接受其他客户端的连接.)本例中,多进程其实没有起到作用. 代码以及解释如下: #socket服务器端程序 import socket import time from multiprocessing import Process #多进程和多线程一样的用法 de