社区
模式及实现
帖子详情
udp协议多对一的实现
wenminglianna
2009-07-09 12:29:28
怎么实现udp协议的多对一传输,就是多个客户端传给一个服务器,服务器接收怎么接受,那么多不同的ip,怎么办?要不停的换不同的ip吗?有什么解决方案
...全文
367
6
打赏
收藏
udp协议多对一的实现
怎么实现udp协议的多对一传输,就是多个客户端传给一个服务器,服务器接收怎么接受,那么多不同的ip,怎么办?要不停的换不同的ip吗?有什么解决方案
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Walf_ghoul
2009-07-09
打赏
举报
回复
[Quote=引用 1 楼 fetag 的回复:]
谁告诉你UDP的server每次只能接受一个client的连接的?
[/Quote]
嗯。。。
独孤过儿
2009-07-09
打赏
举报
回复
谁告诉你UDP的server每次只能接受一个client的连接的?
liaoweixiaoyu
2009-07-09
打赏
举报
回复
有客户端连接 开辟一个新的进程处理
wenminglianna
2009-07-09
打赏
举报
回复
谁告诉我recvfrom()函数要是想接受数据并且不指定固定ip,或者指定一个ip段,怎么设置里面的参数啊,跪求!!!!!!!!!!!!
这才是重点啊。接受数据报后怎么得到源地址啊?
luobinshan
2009-07-09
打赏
举报
回复
5.1.17 recvfrom()
简述:
接收一个数据报并保存源地址。
#include <winsock.h>
int PASCAL FAR recvfrom( SOCKET s, char FAR* buf, int len, int flags,
struct sockaddr FAR* from, int FAR* fromlen);
s:标识一个已连接套接口的描述字。
buf:接收数据缓冲区。
len:缓冲区长度。
flags:调用操作方式。
from:(可选)指针,指向装有源地址的缓冲区。
fromlen:(可选)指针,指向from缓冲区长度值。
注释:
本函数由于从(已连接)套接口上接收数据,并捕获数据发送源的地址。
对于SOCK_STREAM类型的套接口,最多可接收缓冲区大小个数据。如果套接口被设置为线内接收带外数据(选项为SO_OOBINLINE),且有带外数据未读入,则返回带外数据。应用程序可通过调用ioctlsocket()的SOCATMARK命令来确定是否有带外数据待读入。对于SOCK_STREAM类型套接口,忽略from和fromlen参数。
对于数据报类套接口,队列中第一个数据报中的数据被解包,但最多不超过缓冲区的大小。如果数据报大于缓冲区,那么缓冲区中只有数据报的前面部分,其他的数据都丢失了,并且recvfrom()函数返回WSAEMSGSIZE错误。
若from非零,且套接口为SOCK_DGRAM类型,则发送数据源的地址被复制到相应的sockaddr结构中。fromlen所指向的值初始化时为这个结构的大小,当调用返回时按实际地址所占的空间进行修改。
如果没有数据待读,那么除非是非阻塞模式,不然的话套接口将一直等待数据的到来,此时将返回SOCKET_ERROR错误,错误代码是WSAEWOULDBLOCK。用select()或WSAAsynSelect()可以获知何时数据到达。
如果套接口为SOCK_STREAM类型,并且远端“优雅”地中止了连接,那么recvfrom()一个数据也不读取,立即返回。如果立即被强制中止,那么recv()将以WSAECONNRESET错误失败返回。
在套接口的所设选项之上,还可用标志位flag来影响函数的执行方式。也就是说,本函数的语义既取决于套接口选项,也取决于标志位参数。标志位可取下列值:
值 意义
MSG_PEEK 查看当前数据。数据将被复制到缓冲区中,但并不从输入队列中删除。
MSG_OOB 处理带外数据(参见2.2.3节具体讨论)。
返回值:
若无错误发生,recvfrom()返回读入的字节数。如果连接已中止,返回0。否则的话,返回SOCKET_ERROR错误,应用程序可通过WSAGetLastError()获取相应错误代码。
错误代码:
WSANOTINITIALISED:在使用此API之前应首先成功地调用WSAStartup()。
WSAENETDOWN:WINDOWS套接口实现检测到网络子系统失效。
WSAEFAULT:fromlen参数非法;from缓冲区大小无法装入端地址。
WSAEINTR:阻塞进程被WSACancelBlockingCall()取消。
WSAEINPROGRESS:一个阻塞的WINDOWS套接口调用正在运行中。
WSAEINVAL:套接口未用bind()进行捆绑。
WSAENOTCONN:套接口未连接(仅适用于SOCK_STREAM类型)。
WSAENOTSOCK:描述字不是一个套接口。
WSAEOPNOTSUPP:指定了MSG_OOB,但套接口不是SOCK_STREAM类型的。
WSAESHUTDOWN:套接口已被关闭。当一个套接口以0或2的how参数调用shutdown()关闭后,无法再用recv()接收数据。
WSAEWOULDBLOCK:套接口标识为非阻塞模式,但接收操作会产生阻塞。
WSAEMSGSIZE:数据报太大无法全部装入缓冲区,故被剪切。
WSAECONNABORTED:由于超时或其他原因,虚电路失效。
WSAECONNRESET:远端强制中止了虚电路。
wenminglianna
2009-07-09
打赏
举报
回复
我是纳闷那个要是同时接受多个client,recvfrom里面ip那个参数该怎么写
C#的Socket
实现
UDP
协议
通信
C#的Socket
实现
UDP
协议
通信 CSharp
TCP和
UDP
协议
特性 无连接的 相比于TCP
协议
,
UDP
协议
在传送数据前不需要建立连接。 是尽最大努力交付的 也就是说
UDP
协议
无法保证数据能够准确的交付到目的主机。也不需要对接收到的
UDP
报文进行确认。 是面向报文的 也就是说
UDP
协议
将应用层传输下来的数据封装在一个
UDP
包中,不进行拆分或合并。因此,运输层在收到对方的
UDP
包后,会去掉首部后,将数据原封不动的交给应用进程。 没有拥塞控制 因此
UDP
协议
的发送速率不受网络的拥塞度影响。
UDP
支持一对一、一对多、多对一和多对多的交互通信
UDP
的头部
计算机网络 传输层 TCP和
UDP
协议
Re: 计算机网络 传输层 TCP和
UDP
协议
# 传输层
协议
TCP 和
UDP
的应用场景 要发送的内容多,需要将发送的内容分成多个数据包发送(TCP) 要发送的内容少,一个数据包就能发送全部内容(
UDP
)# 传输层
协议
和应用层
协议
之间的关系 传输层
协议
加一个端口号来标识一个应用层
协议
, 展示了传输层
协议
和应用层
协议
之间的关系# 使用TCP/IP筛选
实现
网络安全 防火墙设置与端口#
UDP
协议
特点和报文格式
UDP
是无连接的:即发送数据之前不需要建立连接
UDP
使用尽最大努力交付:即不保证可靠交付,因此主机不需要维持复杂的连接状态表# TCP
协议
特点和报文格式先连接后释放;点对点;可靠传输;全双工通信;面向数据流七项标记位停止等待
协议
与改进的停止等待
协议
滑动窗口技术详解:确认Seq与选择确认SACK 超时重传时间:查询计算与自动调整 流量控制功能:点对点的流量控制 拥塞控制:相对整体网络环境而言;慢开始算法和拥塞避免算法 改进的拥塞控制:快重传和快恢复 三次握手建立TCP连接,四次挥手释放连接。# TCP
协议
面临的攻击 SYN 攻击:捏造的源地址; LAND攻击:自己就是源地址# 通过抓包工具,查看以上报文格式# 习题详解
Python使用
UDP
协议
与多线程
实现
简单聊天室
Python使用
UDP
协议
与多线程
实现
简单聊天室
TCP
协议
和
UDP
协议
1.传输控制
协议
TCP 1.1TCP的主要特点: 1.1.1面向连接的运输层
协议
socket部分讲述 tcp连接的建立 tcp连接的释放 tcp的有限状态机 1.1.2每一条TCP连接只能有两个端点,每一条TCP链接只能是点对点的(一对一) 1.1.3TCP提供可靠交付的服务 可靠传输的工作原理 可靠传输的
实现
流量控制 拥塞控制 1.1.4TCP提供全双工通信 1.1.5面向字节流 流式服务的特点 1.2与TCP有关的面试问题 2.用户数据报
协议
UDP
2.1
UDP
协
模式及实现
5,530
社区成员
4,169
社区内容
发帖
与我相关
我的任务
模式及实现
C/C++ 模式及实现
复制链接
扫一扫
分享
社区描述
C/C++ 模式及实现
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章