本人用CSocket编写了一个局域网文件传输软件,如果在本机上运行客户端和服务器都能把文件传输过来,但是吧客户端放到局域网的其他电脑上连接本机的服务器,虽然文件也能传输,但是会包含很多空字符,而且Send操作和Recieve操作也不是一一对应(即那边一个Send,服务器这端就一个Recieve),竟出现Recieve应该是接收到的是前一条Send的部分内容和后一条Send的内容的结合体,比如第一次Send("AAAAAAAAAAAAAAAAA",1024);第二次Send(“#Ready#”,1024)但是第一次Receive有时候收到好像是空的,有时候第二条Receive收到的是“AAAAAAAAAA#Ready#"我很不解,这个和接收缓冲区有关么,还是和CSocket的实现机制有关,那位大侠能够说的详细点,如果说好了必定大大加分。最好也能说一下CSocket的运行机制。
解决方案 »
- **********MFC程序,,界面上有多个按键,怎样用程序确定是哪个按键被按下********
- 用API函数ChooseColor打开颜色框,想在用户鼠标选择颜色时马上得到选择的颜色
- 如何检测USB设备的插入和拔出,并读设备中的信息内容?
- 我的vc6工具栏的设置Tools->Options->Directories里面设置的目录怎么不能保存压?
- 求教。 如何实现类似winmap的磁性窗口,最好有代码,多谢了
- 请教怎样得到PacketGetAdapterNames的名字?
- 如何将一个链表及将链表的操作封装为一个类?
- 急死了,在线等候!!
- Precess Viewer太厉害了,能把我的程序杀掉,怎样让他杀不掉?或者就算杀掉,我的程序也要重启机器
- 菜妹: 什么是 Super_ES ? 请教各位学长!!!
- 右键点击任务栏程序图标(非托盘图标)没有弹出系统菜单,这是为什么呢?
- 请问如何通过COM接口函数传递一个内存块?
比如数据前面加个长度
先接受长度
然后循环接收
while(culen < len)
{
////接收
}
1.怎么清空,socket的缓冲区
2.是不是每次Send都必须有一个Receive与之对应
3.Csocket的TCP传输运行机制到底是怎样的即怎么传,怎么收?
4.我已经濒临崩溃了,谁答对疯狂的加分,虽然已经很穷了。
不必管buffer
2.是不是每次Send都必须有一个Receive与之对应
重申tcp是无边界的,coder应该知道要read(recv)多少字节数据
3.Csocket的TCP传输运行机制到底是怎样的即怎么传,怎么收?
你可以每次先read(recv)一个sizet_t length的分节,然后你就知道下一个分节要recv多长
4.我已经濒临崩溃了,谁答对疯狂的加分,虽然已经很穷了。
此题无界
比如struct Data
{
long len;
char buf[4096];
}
///发送
Data data;
memset(&data,0,sizeof(Data)); ///清空
///赋值
send(&data,data.len) ;////接收
memset(&data,0,sizeof(Data)); ///清空
receive(&data.len,sizeof(long));while(culen < len)
{
///}
就会响应这个事件