社区
网络编程
帖子详情
求助,怎么将tcp传输通信改成udp通信!!!!
huoshen001
2005-07-14 05:13:24
我要把一个tcp的变成UDP通信的,但是不知道怎么改,想找点资料,希望大家给点帮助。看不大懂我的意思的,我可以把我的代码给你看下。QQ:77203738。
...全文
1423
14
打赏
收藏
求助,怎么将tcp传输通信改成udp通信!!!!
我要把一个tcp的变成UDP通信的,但是不知道怎么改,想找点资料,希望大家给点帮助。看不大懂我的意思的,我可以把我的代码给你看下。QQ:77203738。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
14 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
huoshen001
2005-07-18
打赏
举报
回复
谢谢大家的帮忙,我差不多解决这个问题了,顺便问下怎么给你们分数???
Zhymax
2005-07-17
打赏
举报
回复
CString strAddr;
UINT nPort;
intSize = m_ClientSocket->ReceiveFrom(strData, sizeof(strData),strAddr,nPort,0);
flashboy
2005-07-17
打赏
举报
回复
没那么容易吧,TCP改UDP, 你得考虑是否在乎数据的可靠性,如果在乎,那么需要在应用层来实现可靠性
Practise_Think
2005-07-17
打赏
举报
回复
这很麻烦的,如果早期开发时封装可以的话(协议与IO操作松耦的话),可将IO那部分内部修改或重写就可以了,不然的话,几乎要整个网络部份重写,那就头痛了
huoshen001
2005-07-15
打赏
举报
回复
我是要对一个按钮进行控制,点一下按钮就将消息发送出去。
我是这么写的
BOOL CFiTSATesterDlg::OnInitDialog()
{
CDialog::OnInitDialog();
m_ClientSocket->Create(8080,SOCK_DGRAM,"192.168.168.177");
m_ClientSocket->Bind(8080,"192.168.168.177");
..........
}
void CFiTSATesterDlg::OnBtnTo01()
{
CString strIPAddress;
CString strPort;
long port;
m_Edit_sv_ip.GetWindowText(strIPAddress);
m_Edit_sv_port.GetWindowText(strPort);
port = atol(strPort);
CString strMess;
CString strTemp;
CString disData = "送信:";
m_Edit_01_data.GetWindowText(strMess);
strMess = strMess + "\r";
m_ClientSocket->SendTo(strMess, strMess.GetLength(),port,strIPAddress,0);
for( int i = 0; i < strMess.GetLength(); i++ ) {
strTemp = disData;
disData.Format( "%s %02X", strTemp, (unsigned char)strMess.GetAt(i) );
}
disData = disData + "\r\n";
m_ClientSocket->AddText(disData);
}
CClientSocket *m_ClientSocket;
CClientSocket 是继承csocket的。
这里我把消息发出去后,经过服务器的处理后,接收服务器发来的数据,我接收应该怎么写?
void CClientSocket::OnReceive(int nErrorCode)
{
CClientSocket *m_ClientSocket;
CString disData = "受信:";
int intSize;
unsigned char strData[1024];
memset(strData, '\0', sizeof(strData));
m_ClientSocket->Create(8080,SOCK_DGRAM,"192.168.168.177");
m_ClientSocket->Bind(8080,"192.168.168.177");
intSize = m_ClientSocket->ReceiveFrom(strData, sizeof(strData),"192.168.168.71",8193,0);
if (intSize > 0)
{
CString tmp;
if( mode == 0 ) {
for( int i = 0; i < intSize; i++ ) {
tmp = disData;
disData.Format( "%s %02X", tmp, strData[i] );
}
disData = disData + "\r\n";
AddText(disData);
} else if( mode == 1 ) {
this->Send(this->mess, this->mess.GetLength());
}
}
CSocket::OnReceive(nErrorCode);
}
是这样么???
但是我这么写好像编译有问题。头大啊..........
qrlvls
2005-07-15
打赏
举报
回复
根据你的具体应用要求有所不同,如果仅仅是点-点传输的话应该是很容易的,只不过需要注意保持数据的可靠性,可以模拟滑动窗口方式,参考 RUDP
AntonlioX
2005-07-14
打赏
举报
回复
你可以去看看 vckbase里面的例子
http://www.vckbase.com/document/viewdoc/?id=1281
http://www.vckbase.com/document/viewdoc/?id=1284
AntonlioX
2005-07-14
打赏
举报
回复
只要你的应用层协议不是很复杂 一般将TCP改为UDP都是很简单的。按照UDP的建立只是比TCp少了 connect 和 listen accept 。我讲的 不是很标准,但是基本意思这是如此。
你在转换的时候 要注意每次发出的包的大小 ,如果超过了MTU 就分包发送 ,
Zhymax
2005-07-14
打赏
举报
回复
如果实现结构比较清晰的话,应该不是很麻烦
ihavenoidea
2005-07-14
打赏
举报
回复
在网上搜一下 UDP 的相关例子
ihavenoidea
2005-07-14
打赏
举报
回复
重新实现一遍吧~
huoshen001
2005-07-14
打赏
举报
回复
我是要模拟一个客户端的设备,进行和一个服务器通信,本来是TCP的,后来发现用那个服务是用UDP协议的.我尝试在原来的代码里面改过了,但是还是不行.因为以前都没做过,不知道怎么入手了.谁有兴趣帮忙的话,我可以将代码发给他,
哎 头都大了 5555
菲斯可儿
2005-07-14
打赏
举报
回复
晕啊,能行吗?如果程序不复杂,还是重新实现一遍吧。
wang_yuanwai
2005-07-14
打赏
举报
回复
udp是面向无连接的,你把socket函数的SOCK_STREAM改成SOCK_DGRAM,sever端不用listen和accept函数,client端不用connect函数,原来的都留着就行了,祝你好运!
TCP
协议详解 (史上最全)
文章很长,建议收藏起来,慢慢读! 疯狂创客圈为小伙伴奉上以下珍贵的学习资源: 疯狂创客圈 经典图书 : 《Netty Zookeeper Redis 高并发实战》 面试必备 + 大厂必备 + 涨薪必备 疯狂创客圈 经典图书 : 《SpringCloud、Nginx高并发核心编程》 面试必备 + 大厂必备 + 涨薪必备 资源宝库: Java程序员必备 网盘资源大集合 价值>1000元 随便取 GO->【博客园总入口 】 独孤九剑:Netty灵魂实验 : 本地 100W
哈工大毕设记录-使用ZYNQ MPSoC开发板实现的Linux环境千兆以太网C语言
UDP
协议批量文件存取(上)
工作总结:使用米联客Zynq UltraScale+ MPSoC MZU07A-EV开发板,利用赛灵思官方petalinux2019.2移植嵌入式系统并部署至SD卡,采用千兆以太网
UDP
/IP协议
传输
文件数据,编写Linux环境的C语言客户端与服务端代码,实现Linux虚拟机与开发板SSD之间的批量文件存取功能。
技术岗面试基础知识复习——计算机网络
OSI七层模型 osi七层模型描述了网络活动的特点。 物理层:只负责
传输
01二进制比特流,为设备之间的数据
通信
提供
传输
媒体和互连设备,确保原始的数据可在各种物理媒体上
传输
,为数据链路层提供物理连接 数据链路层:在
通信
实体之间建立数据链路连接,将上层数据封装成帧,以帧为单位传送数据。 网络层:负责路由寻址和广播内容,选择合适的网间路由和交换结点,确保数据及时传送(网络层协议有:IP协议,ICMP控制报文协议,ARP地址转换协议等)
传输
层:向用户提供可靠的端到端的连接(
TCP
,
UDP
) 会
408 知识点笔记——计网(
传输
层、应用层)
5
传输
层 【
TCP
是面向连接的,但
TCP
使用的 IP 却是无连接的】 【常见的几个熟知端口】 熟知端口(保留端口):数值一般为 0 ~ 1023 【
TCP
建立连接和释放连接】 △☼▽ 分析:C,SYN = 1,ACK= 1,ack = 11221,seq 任意 分析:D,A 发送的报文段的序号为 300 ~ 306,B 在对该报文的确认报文段中的 ACK 应该为 307,又由 A 发送的报文段的确认号可以知道,A 期待下一个收到的 B 的报文段序号为 101,故此时 B 的确认报文
TCP
/IP网络编程(二)
读书笔记
网络编程
18,363
社区成员
64,187
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章