- 浏览: 761109 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
UDP:是无连接不可靠的数据报协议,一些常见的程序有:DNS(域名系统),NFS(网络文件系统)和SNMP(简单网络管理协议).
UDP和TCP在首部中都有覆盖它们首部和数据的检验和.UDP的检验和是可选的,而TCP的检验和是必需的.如果发送端没有计算检验和而接收端检测到检验和有差错,那么UDP数据报就要被悄悄地丢弃.不产生任何差错报文.其目的是为了发现UDP首部和数据在发送端到接收端之间发生的任何改动
udp中也有connect:但一般只有在使用自己的套接字与确定的唯一对端进行通信时,才可以调用connect.调用connect的通常是UDP客户,不过有些网络应用中的UDP服务器会与单个客户端长时间通信,这时,客户和服务器都可能调用connect
udp套接字不存在真正的发送缓冲区,内核只是复制应用进程数据并把它沿协议栈向下传送,渐次冠以UDP首部和IP首部.
udpserver.cpp
udpclient
编译client:
1.g++ -c udpclient.cpp
2.g++ -o udpclient udpclient.o
效果图:左下角是在跑的服务器,右边是在命令行跑的客户端,如果你找不到unp.h头文件,那么它出自unix网络编程(129块,比代码大全还贵一块),还有哪本圣经比它更贵的告诉我下...谢谢!
select版
UDP和TCP在首部中都有覆盖它们首部和数据的检验和.UDP的检验和是可选的,而TCP的检验和是必需的.如果发送端没有计算检验和而接收端检测到检验和有差错,那么UDP数据报就要被悄悄地丢弃.不产生任何差错报文.其目的是为了发现UDP首部和数据在发送端到接收端之间发生的任何改动
udp中也有connect:但一般只有在使用自己的套接字与确定的唯一对端进行通信时,才可以调用connect.调用connect的通常是UDP客户,不过有些网络应用中的UDP服务器会与单个客户端长时间通信,这时,客户和服务器都可能调用connect
udp套接字不存在真正的发送缓冲区,内核只是复制应用进程数据并把它沿协议栈向下传送,渐次冠以UDP首部和IP首部.
udpserver.cpp
#include"unp.h" #include<iostream> using namespace std; void dg_echo(int sockfd, SA *pcliaddr, socklen_t clilen) { int n; socklen_t len; char mesg[MAXLINE]; bzero(mesg,MAXLINE); for(;;){ len = clilen; n = recvfrom(sockfd,mesg,MAXLINE,0,pcliaddr,&len); cout << mesg << endl; sendto(sockfd,mesg,n,0,pcliaddr,len); } } int main(int argc,char ** argv) { int sockfd; struct sockaddr_in servaddr,cliaddr; bzero(&servaddr,sizeof(servaddr)); bzero(&cliaddr,sizeof(cliaddr)); sockfd = socket(AF_INET,SOCK_DGRAM,0); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); bind(sockfd,(SA *)&servaddr,sizeof(servaddr)); dg_echo(sockfd,(SA*)&cliaddr,sizeof(cliaddr)); }
udpclient
#include"unp.h" #include<stdio.h> int main(int argc,char ** argv) { int sockfd; struct sockaddr_in servaddr; bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_port = htons(SERV_PORT); inet_pton(AF_INET,"192.168.5.178",&servaddr.sin_addr); sockfd = socket(AF_INET,SOCK_DGRAM,0); dg_cli(stdin,sockfd,(SA*)&servaddr,sizeof(servaddr)); exit(0); } void dg_cli(FILE *fp, int sockfd, const SA * pservaddr, socklen_t servlen) { int n; char sendline[MAXLINE],recvline[MAXLINE+1]; while(fgets(sendline,MAXLINE,fp)!=NULL){ sendto(sockfd,sendline,strlen(sendline),0,pservaddr,servlen); n = recvfrom(sockfd,recvline,MAXLINE,0,NULL,NULL); recvline[n] = 0; fputs(recvline,stdout); } }
编译client:
1.g++ -c udpclient.cpp
2.g++ -o udpclient udpclient.o
效果图:左下角是在跑的服务器,右边是在命令行跑的客户端,如果你找不到unp.h头文件,那么它出自unix网络编程(129块,比代码大全还贵一块),还有哪本圣经比它更贵的告诉我下...谢谢!
select版
#include"unp.h" #include"sys/types.h" int main() { int listenfd,connfd,udpfd,nready,maxfdp1; char mesg[MAXLINE]; pid_t childpid; fd_set rset; ssize_t n; socklen_t len; const int on = 1; struct sockaddr_in cliaddr,servaddr; void sig_chld(int); listenfd = socket(AF_INET,SOCK_STREAM,0); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); setsockopt(listenfd,SOL_SOCKET,SO_REUSEADDR,&on,sizeof(on)); bind(listenfd,(SA *)&servaddr,sizeof(servaddr)); listen(listenfd,LISTENQ); udpfd = socket(AF_INET,SOCK_DGRAM,0); bzero(&servaddr,sizeof(servaddr)); servaddr.sin_family = AF_INET; servaddr.sin_addr.s_addr = htonl(INADDR_ANY); servaddr.sin_port = htons(SERV_PORT); bind(udpfd,(SA *)&servaddr,sizeof(servaddr)); //signal(SIGCHLD,sig_chld); FD_ZERO(&rset); maxfdp1 = max(listenfd,udpfd)+1; for(;;){ FD_SET(listenfd,&rset); FD_SET(udpfd,&rset); if((nready = select(maxfdp1,&rset,NULL,NULL,NULL))<0){ if(errno == EINTR) continue; else perror("select error"); } if(FD_ISSET(listenfd,&rset)){ len = sizeof(cliaddr); connfd = accept(listenfd,(SA *)&cliaddr,&len); if((childpid = fork())==0){ close(listenfd); //str_echo(connfd); exit(0); } close(connfd); } if(FD_ISSET(udpfd,&rset)){ len = sizeof(cliaddr); n = recvfrom(udpfd,mesg,MAXLINE,0,(SA *)&cliaddr,&len); sendto(udpfd,mesg,n,0,(SA *)&cliaddr,len); } } }
发表评论
-
滑动窗口与拥塞控制
2017-09-29 14:47 759滑动窗口:用作流量控制: 1.发送端和接收端各维护一个独立的发 ... -
rawsocket发送tcp包
2017-09-25 11:52 982testTcp.h #ifndef TESTTCP_H ... -
柔性数组
2017-09-20 09:53 504#include <iostream> #i ... -
rawsocket发送dns包
2017-09-14 15:18 613#include <stdio.h> #in ... -
rawsocket发送icmp包
2017-09-06 09:54 657#include <stdio.h> #in ... -
netfilter
2016-10-04 20:31 474http://blog.chinaunix.net/uid-2 ... -
gdb的简单使用
2016-09-19 15:18 416注意编译的时间加上-g参数 1.调试运行 gdb a.out ... -
TCP各状态的意义
2016-03-01 14:06 420各个状态的意义如下: LISTEN - 侦听来自远方TCP端 ... -
log
2015-03-30 17:42 451log.h #ifndef __LOG_H__ #def ... -
TIMEWAIT与CLOSEWAIT
2015-03-17 11:32 659http://blog.csdn.net/kobejayand ... -
TcpClient
2015-01-16 17:46 470TcpClient.h #ifndef TCPCLIENT ... -
信号量
2014-09-26 10:20 681#include <semaphore.h> ... -
共享内存
2014-09-17 10:39 596SharedMemory.h #ifndef SHARED ... -
记录锁
2014-09-11 16:32 435#include <errno.h> #in ... -
popen
2014-09-06 14:50 639#include <stdio.h> #in ... -
大小端存储
2014-09-05 09:29 603#include <stdio.h> i ... -
条件变量(cond)
2014-09-01 11:02 873#include <pthread.h> # ... -
读写锁
2014-09-01 10:33 728#include <pthread.h> # ... -
trylock
2014-09-01 10:07 667#include <pthread.h> # ... -
线程分离
2014-09-01 10:00 693http://www.cnblogs.com/mydomain ...
相关推荐
### UDP套接字详解 #### 一、基本概念与特点 **UDP套接字**是一种基于TCP/IP协议的网络通信模型中的重要组成部分,它支持无连接的通信模式。与TCP套接字不同的是,UDP不提供可靠的数据传输,即不保证数据包能够按...
总结来说,理解UDP套接字连接的关键在于掌握如何创建和使用UDP套接字,以及如何在无连接的情况下正确地发送和接收数据。在实际应用中,UDP常用于实时性要求高、对数据完整性和顺序性不敏感的场景,如视频流传输、...
### UDP套接字实例知识点详解 #### 一、UDP套接字概述 用户数据报协议(User Datagram Protocol,UDP)是一种无连接的传输层协议,主要用于那些对传输速度要求较高而对可靠性要求较低的应用场景。UDP套接字是用于...
头歌UDP Ping程序实现-客户端创建UDP套接字头歌UDP Ping程序实现-客户端创建UDP套接字头歌UDP Ping程序实现-客户端创建UDP套接字头歌UDP Ping程序实现-客户端创建UDP套接字头歌UDP Ping程序实现-客户端创建UDP套接...
第1关:Ping服务端创建UDP套接字第1关:Ping服务端创建UDP套接字第1关:Ping服务端创建UDP套接字第1关:Ping服务端创建UDP套接字第1关:Ping服务端创建UDP套接字第1关:Ping服务端创建UDP套接字第1关:Ping服务端...
本文将对用套接字实现UDP传输的C++源码进行详细分析,从标题、描述、标签和部分内容四个方面入手,深入探讨UDP套接字的工作原理、客户端和服务器端代码实现、重要函数和变量的作用等方面。 标题和描述 标题“用套...
网络编程中的UDP套接字是基于用户数据报协议(User Datagram Protocol)的一种通信方式,它在互联网协议族中扮演着重要角色。UDP是一种无连接、不可靠的传输协议,相较于TCP,它更注重效率和速度,但不保证数据的...
- 首先,导入socket模块并创建一个UDP套接字对象,使用socket.SOCK_DGRAM指定UDP协议。 - 绑定本地IP地址和端口号,这使得服务端可以监听特定的网络接口和端口,等待来自客户端的数据。 - 使用socket的recvfrom...
UDP套接字在C语言中编程时,主要涉及以下知识点: 1. **套接字API**: Windows操作系统提供了Winsock库来支持套接字编程。在C语言中,我们需要引入`winsock2.h`头文件,并在程序开始时调用`WSAStartup`函数初始化套...
在IT领域,网络通信是应用程序之间交互的重要方式。在C#编程中,我们可以使用System.Net...在给定的slnSocket压缩包文件中,可能包含了这个项目的源代码,进一步的分析和学习将有助于深入理解UDP套接字通信的实现细节。
在IT领域,网络通信是核心部分之一,而TCP(传输控制协议)和UDP(用户数据报协议)则是两种主要的传输层协议。本主题聚焦于如何利用这两种协议设计一个简单的客户/服务器系统,并涉及到多线程编程技术。下面将详细...
在这个"UDP-chat.rar"项目中,我们看到的是一个利用UDP套接字实现的简单聊天程序,旨在帮助学习者掌握UDP套接字的基本用法。 在UDP中,数据是以数据报的形式发送的,每个数据报都有完整的源和目的地址,可以独立于...
【标题】:“Windows下UDP套接字聊天小软件”是一个基于UDP协议的简易通信程序,专为初学者设计,用于理解套接字编程的基本概念和操作。它在Windows操作系统环境下运行,通过设置客户端代码中的IP地址,使得不同...
**UDP套接字示例** 1. 创建套接字:`socket()`函数创建一个套接字。 2. 绑定套接字:`bind()`函数将套接字与本地地址关联。 3. 发送数据:`sendto()`函数向指定的远程地址发送数据。 4. 接收数据:`recvfrom()`函数...
1. **UDP套接字的创建**:在Java中,我们可以使用`java.net.DatagramSocket`类来创建UDP套接字。这个类提供了发送和接收数据报包的功能。首先,我们需要创建一个`DatagramSocket`实例,指定一个端口号,这个端口号...
在UDP套接字编程中,主要涉及以下几个函数: - **`recvfrom()`**:接收来自UDP套接字的数据。 - 参数: - `sockfd`:套接字文件描述符。 - `buff`:用于存储接收数据的缓冲区指针。 - `nbytes`:缓冲区大小。 ...
在本程序中,"DUP套接字客户端"利用UDP套接字实现了一个简单的发送数据的功能,这通常用于需要快速传输而不关心数据是否丢失或重复的场景,如在线视频流、实时游戏等。 首先,让我们深入理解UDP套接字的工作原理。...
PythonUDPstreamer-tool 是一个基于Python的开源工具,专门用于通过UDP套接字进行实时视频流传输。在无线网络和WiFi环境下,这种工具特别有用,因为它可以高效地处理数据包丢失,同时保持较低的延迟,确保视频流的...
2. **创建套接字**:使用`socket`函数创建一个UDP套接字,指定协议类型为`AF_INET`(IPv4)和`SOCK_DGRAM`(UDP)。 3. **绑定套接字**:通过`bind`函数将套接字绑定到本地端口,以便接收和发送数据。 4. **设置广播...