基于UDP协议的socket通信

UDP提供了无连接通信,且不对传送数据包进行可靠性保证,适合于一次传输少量数据。

具体实现:

udp_server.c

  1 #include<stdio.h>
  2 #include<stdlib.h>
  3 #include<errno.h>
  4 #include<sys/types.h>
  5 #include<sys/socket.h>
  6 #include<unistd.h>
  7 #include<string.h>
  8 #include<arpa/inet.h>
  9 #include<netinet/in.h>
 10 void usage(char* argv)
 11 {   
 12     printf("%s:[ip][port]\n",argv);
 13 }
 14 
 15 int main(int argc,char* argv[])
 16 {
 17     if(argc!=3) //判断传参错误
 18     {
 19         usage(argv[0]);
 20         exit(1);
 21     }
 22     int port=atoi(argv[2]);
 23     char* ip=argv[1];
 24     //sock()
 25      int sock=socket(AF_INET,SOCK_DGRAM,0); //创建套接字
 26     if(sock<0)
 27     {
 28         perror("sock");
 29         exit(2);
 30     }
 31     struct sockaddr_in local;
 32     local.sin_family=AF_INET;
 33     local.sin_port=htons(port);
 34     local.sin_addr.s_addr=inet_addr(ip);
 35     if(bind(sock,(struct sockaddr*)&local,sizeof(local))<0)  //绑定本地地址
 36     {
 37         perror("bind\n");                                    //UDP面向无连接的,所以                                                                    无需进行监听,接收
 38         exit(1);
 39     }
 40      struct sockaddr_in client;
 41      socklen_t size=sizeof(client);
 42     char buf[1024];
 43     while(1)
 44     {
 45         size_t _s=recvfrom(sock,buf,sizeof(buf)-1,0,(struct sockaddr*)&clien    t,&size);
 46         if(_s>0)
 47         {
 48             buf[_s-1]=‘\0‘;
 49             printf("[ip]:%s",inet_ntoa(client.sin_addr));
 50             printf("[port]:%ld",ntohs(client.sin_port));
 51             printf("get connection..\n");
 52             printf("%s\n",buf);
 53         }
 54         else if(_s==0)
 55         {
 56             printf("client close\n");
 57         }
 58         else
 59         {
 60             perror("read");
 61         }
 62     }
 63 
 64 
 65     return 0;
 66 }

实现结果:

[[email protected] socket]$ ./udp_server 127.0.0.1 8080
[ip]:127.0.0.1[port]:57701get connection..
nihao
[ip]:127.0.0.1[port]:57701get connection..
woaini
^C
时间: 2024-07-30 13:10:50

基于UDP协议的socket通信的相关文章

Android基础入门教程——7.6.4 基于UDP协议的Socket通信

Android基础入门教程--7.6.4 基于UDP协议的Socket通信 标签(空格分隔): Android基础入门教程 本节引言: 本节给大家带来Socket的最后一节:基于UDP协议的Socket通信,在第一节中我们已经详细地 比较了两者的区别,TCP和UDP最大的区别在于是否需要客户端与服务端建立连接后才能进行 数据传输,如果你学了前两节TCP的,传输前先开服务端,accept,等客户端接入,然后获得 客户端socket然后进行IO操作,而UDP则不用,UDP以数据报作为数据的传输载体,

网络编程——基于TCP协议的Socket编程,基于UDP协议的Socket编程

Socket编程 目前较为流行的网络编程模型是客户机/服务器通信模式 客户进程向服务器进程发出要求某种服务的请求,服务器进程响应该请求.如图所示,通常,一个服务器进程会同时为多个客户端进程服务,图中服务器进程B1同时为客户进程A1.A2和B2提供服务. Socket概述 ①   所谓Socket通常也称作“套接字”,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过“套接字”向网络发出请求或者应答网络请求. ②   Socket是连接运行在网络上的两个程序间的双向通信的端点. ③  

基于UDP协议的socket编程

UDP协议特点: 1.无连接.服务端与客户端传输数据之前不需要进行连接,且没有超时重发等机制,只是把数据通过网络发送出去.也正是因为此特点,所以基于UDP协议的socket的客户端在启动之前不需要先启动服务端. 2.不可靠.数据在本地通过网络发出之后,UDP协议会立即清除本地的缓存,即使对方没有收到该数据,也不做任何补救措施. 3.数据报协议. 代码示例: 1 import socket 2 server = socket.socket(socket.AF_INET,socket.SOCK_DG

基于UDP协议的socket套接字编程 基于socketserver实现并发的socket编程

基于UDP协议 的socket套接字编程 1.UDP套接字简单示例 1.1服务端 import socket server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM) # 建立一个UDP协议的服务器 server.bind(("127.0.0.1",8080)) while True: data,addr = server.recvfrom(1024) server.sendto(data.upper(),addr) server

基于UDP协议的socket套接字编程

基于UDP协议的socket套接字编程 一.UDP套接字简单示例 1.1 服务器 import socket server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 数据报协议->UDP server.bind(('127.0.0.1', 8080)) while True: data, client_addr = server.recvfrom(1024) print('===>', data, client_addr) ser

Android基础入门教程——7.6.3 基于TCP协议的Socket通信(2)

Android基础入门教程--7.6.3 基于TCP协议的Socket通信(2) 标签(空格分隔): Android基础入门教程 本节引言: 上节中我们给大家接触了Socket的一些基本概念以及使用方法,然后写了一个小猪简易聊天室的 Demo,相信大家对Socket有了初步的掌握,本节我们来学习下使用Socket来实现大文件的断点续传! 这里讲解的是别人写好的一个Socket上传大文件的例子,不要求我们自己可以写出来,需要的时候会用 就好! 1.运行效果图: 1.先把我们编写好的Socket服务

Android基础入门教程——7.6.2 基于TCP协议的Socket通信(1)

Android基础入门教程--7.6.2 基于TCP协议的Socket通信(1) 标签(空格分隔): Android基础入门教程 本节引言: 上一节的概念课枯燥无味是吧,不过总有点收获是吧,本节开始我们来研究基于TCP协议的Socket 通信,先来了解下Socket的概念,以及Socket通信的模型,实现Socket的步骤,以及作为Socket服务 端与客户端的两位各做要做什么事情!好的,我们由浅入深来扣这个Socket吧! 1.什么是Socket? 2.Socket通信模型: Socket通信

102 基于UDP协议的socket套接字

目录 一.基于UDP协议的socket套接字编程 1.1 用法 1.2 udp协议的特点 1.3 实例 一.基于UDP协议的socket套接字编程 socket套接字包括使用TCP协议和UDP协议进行通讯 1.1 用法 socket指定使用UDP通讯协议server = socket.socket(socket.AF_INET, type=socket.SOCK_DGRAM) 发送udp数据server.sendto(发送数据) 接收udp数据data, addr = server.recvfr

基于UDP协议之——socket编程

一. socket API 前面一篇<基于TCP协议之--socket编程>http://2627lounuo.blog.51cto.com/10696599/1775559已经花了大量的篇幅讲述了socket和使用基本的socket API所需要注意的问题,这里就不再赘述了.下面主要谈论的是UDP和TCP在socket编程中的不同之处: 1. 创建sock 和TCP面向连接的可靠的字节流传输服务不同的是,UDP是无连接的不可靠的数据报传输服务:虽然有所不同,但同样在进程间通信的时候需要提供出