mfc中tcp/ip网络通信无法接收数据

接受数据时无论如何都无法进入receive函数、哪位大神帮忙看看图片说明图片

2个回答

SendSock 这个指针是否正确??也就是这个Socket是否创建成功了。。。

sendsock需要是已经建立连接的socket

qq_31984851
qq_31984851 在上面的addclient函数中已经建立连接了啊
接近 3 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
网络通信 TCP UDP 接收数据
如果对端发送的数据,没有标识大小,即,不能先收一个表示大小的头,再根据大小接收,这种情况下,就要根据标志数据及校验码进行接收。
网络通信tcp/ip源代码
The files in this release contain a simple implementation of TCP & FTP, suitable for burning into ROM. It is, in effect, a big hack put together in two or three days. It works for us, though, and you might like it, too. We use it to boot our image processor by retrieving a load file using the standard FTP server.
Linux网络通信 -- TCP/IP协议
一、网络通信 网络是通过物理链路将各个孤立的工作站或主机相连在一起,组成数据链路,从而达到资源共享和通信的目的,通过信息交换实现人与人、人与计算机、计算机与计算机之间的通信。 1. 网络通信要遵守网络协议,局域网中最常用的有三个网络协议:MICROSOFT的NETBEUI、NOVELL的IPX/SPX和TCP/IP协议。 a> NetBEUI - 网络基本输入输出系统扩展用户接口。N
网络通信基础知识(tcp/ip)
入门书籍:图解服务器端网络架构.pdf 一、TCP/IP协议栈中的各层的作用 1.物理层:解决的是传输0和1的问题 2.链路层:解决的是数据从源地址到目的地址传输的问题,通过MAC地址在自己的局域网内,以及通过L2交换机维护MAC地址和网口的映射表,来确保子网的数据有序的传输。 问题:既然局域网是用MAC地址就可以通信,为什么还需要IP地址? 局域网用MAC通讯为什么还要IP? 可...
网络通信 传统与TCP/IP
网络通信 1.传统网络模型(7个层次):物理层,数据链路层,网络层,传输层,会话层,表示层,应用层 2.TCP / IP(4个层次):链接层,网络层,传输层,应用层 总结:TCP层次的讲解 1.链接层:监视数据在主机与网络之间的交换地址解析协议 2.网络层:数据包的逻辑传输 3.传输层:数据包的顺序传送,完整性例如:①udp(用户数据报协议) ...
C++ 网络通信 TCP/IP
我写个小程序,是用TCP/IP通信协议将一个文件发送到另外一台机器。程序编写后运行正常,但是有个问题,我在客户端加上代码Sleep(1)后传送过来的文件就一个字节都没有丢,但是不加Sleep(1)时丢了些字节。我在想是不是两台机器运行速度不一样导致发送和接收数据速度不一样?rn我在单步调试过程中,发现服务器端发送数据时是批量发送,一次发送几十个数据,等客户端接收完后又发送几十个数据,直至数据发送完,我想请问在服务器端发送数据时是什么规则?rn下面是代码:rn服务器端:rn[code=C/C++]#include rn#include rn#include rnusing namespace std;rnrnvoid main()rnrn WORD wVersionRequested;rn WSADATA wsaData;rn int err;rn rn wVersionRequested = MAKEWORD( 1, 1 );rn rn err = WSAStartup( wVersionRequested, &wsaData );rn if ( err != 0 ) rn return;rn rn rnrn if ( LOBYTE( wsaData.wVersion ) != 1 ||rn HIBYTE( wsaData.wVersion ) != 1 ) rn WSACleanup( );rn return; rn rnrn SOCKET sockSrv=socket(AF_INET,SOCK_STREAM,0);rnrn SOCKADDR_IN addrSrv;rn addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY);rn addrSrv.sin_family=AF_INET;rn addrSrv.sin_port=htons(6000);rnrn bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));rnrn SOCKADDR_IN addrClient;rn int len=sizeof(SOCKADDR);rnrn listen(sockSrv,1);rn SOCKET sockConn=accept(sockSrv,(SOCKADDR*)&addrClient,&len);rnrn FILE *pFile=fopen("c:\\a.bmp","rb");rn long ul=0;rn fseek(pFile,0,SEEK_END);rn ul=ftell(pFile);rn rewind(pFile);rn int count=0;rn char buffer[10];rn for(int i=0;i<10;i++)rn buffer[i]=0;rn _itoa(ul, buffer,10);rnrn if(SOCKET_ERROR==send(sockConn,buffer,10,0))rn rn cout<<"Picture length send failed!!!"<1024)rn rn char sendBuf[1024];rn if(0!=fseek(pFile,count,SEEK_SET))rn cout<<"Seek failed!!!"<rn#include rn#include rnusing namespace std;rnrnvoid main()rnrn WORD wVersionRequested;rn WSADATA wsaData;rn int err;rn rn wVersionRequested = MAKEWORD( 1, 1 );rn rn err = WSAStartup( wVersionRequested, &wsaData );rn if ( err != 0 ) rn return;rn rn rnrn if ( LOBYTE( wsaData.wVersion ) != 1 ||rn HIBYTE( wsaData.wVersion ) != 1 ) rn WSACleanup( );rn return; rn rn SOCKET sockClient=socket(AF_INET,SOCK_STREAM,0);rnrn SOCKADDR_IN addrSrv;rn addrSrv.sin_addr.S_un.S_addr=inet_addr("192.168.0.101");rn addrSrv.sin_family=AF_INET;rn addrSrv.sin_port=htons(6000);rn if(SOCKET_ERROR==connect(sockClient,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR)))rn rn cout<<"connect failed"<1024)rn rn char recvBuf[1024];rn if(SOCKET_ERROR==recv(sockClient,recvBuf,1024,0))rn rn cout<<"recv failed"<
TCP/IP网络通信
使用socket编程实现两台或多台计算机之间的通信 java开发
MFC 网络通信 TCP 客户端
MFC 网络通信 TCP 客户端
TCP通信无法接收数据
TCP通信无法接收数据,代码如下:rnrn /// rn /// 声明获取事件的委托rn /// rn private delegate void SynReceive();rn /// rn /// 线程接收函数rn /// rn rn public void Receive()rn rn rn tryrn rn string strRcv = "";rn // 声明字节数组,一次接收数据的长度为1024字节 rn byte[] RcvBuffer = new byte[1024];rn //循环读取,直到接收完所有数据 rn while (true)rn rn int bytes = socket.Receive(RcvBuffer, RcvBuffer.Length, 0);rn //读取完成后退出循环 rn if (bytes <= 0)rn break;rn //将读取的字节数转换为字符串 rn strRcv += Encoding.ASCII.GetString(RcvBuffer,bytes,0);rn rn if (!txtRcv.InvokeRequired)rn rn txtRcv.AppendText(strRcv);rnrn rn elsern rn txtRcv.Invoke(new SynReceive(Receive));rn rnrn rn rn rn catch (Exception ex)rn rn MessageBox.Show(ex.Message);rn rnrn rn
TCP/IP接收数据的超时时间设置
timeout.tv_sec = time_out; //设置超时srntimeout.tv_usec = 0;rnret = select(sock+1, &recv_mask, NULL, NULL, &timeout);rn这个是linux下 可以设置超时时间的。rnrnwindows,VC下设置超时时间的是那个呢?rn recv(sock, szBuff, 1024, 0);这个函数吗?
关于Tcp/Ip接收数据的问题:
我门现在在做的一实时监控系统,出现如下所述情况:rn1,在关闭实时监控系统的情况下刷卡直到结束,然后打开实时监控系统,此时没有错误!(我们的硬件可存储数据!)rn2,在打开实时监控系统,即边打开边接受数据,就出现数据丢失或者数据串位情况!初步分析后确定是硬件数据延时导致!在硬件刷卡接受数据时恰巧碰到软件发命令要求取数据,这时硬件对软件发过来的命令没有及时响应,软件就去到下一个硬件取数据。此时前一硬件数据存储完成后开始响应命令,返回数据给软件,而当前硬件也响应命令返回数据给软件,在这种情况下就造成数据丢失或者串位!请问这种情况要怎么处理?rn以下是部分代码:rnstrPollstring = MakePacket$(Left(strControllerAdd, 2), Chr$(&H56), "9")'检测硬件中是否有数据,strControllerAdd为硬件地址号rnIf Trim(rsSpollingController!ConnectType) = "TCP_IP" Then’Tcp/Ip连接 rnCheckWinsock strConnparameter, Me rn If Winsock1(intWinsockStatus).State = 7 Thenrn strReceiveData = ""rn Winsock1(intWinsockStatus).SendData strPollstringrn time1 = Timer: time2 = Timer rn Do While time2 - time1 < 2rn DoEventsrn time2 = Timerrn If strReceiveData <> "" Thenrn SBar1.Panels(3).Text = strReceiveDatarn Exit Dorn End Ifrn LooprnrnCall ViewReceiveData'处理接受回来的数据rnCall DataDelWinSock'删除硬件中已取出的数据rnrnPublic Function CheckWinsock(ByVal strConnparameter As String, ByVal Frm As Form)rnrn On Error Resume Nextrn Dim inta As Integerrn intWinsockStatus = 0rn For inta = 1 To Frm.Winsock1.UBoundrn If Frm.Winsock1(inta).RemoteHost = strConnparameter Thenrn intWinsockStatus = intarn Exit Forrn End Ifrn rn Nextrn If Frm.Winsock1(intWinsockStatus).State <> 7 Thenrn Frm.Winsock1(intWinsockStatus).Closern Frm.Winsock1(intWinsockStatus).Connectrn DoEventsrn' Sleep 200rn End IfrnEnd Functionrnrn
stm32 TCP IP网络通信源码.
stm32 TCP IP网络通信源码.完整源码,可编译,可运行
TCP/IP聊天工具(MFC)
用MFC中的CSocket编写的程序,觉得不错对于入门级的MFC网络编程有很好的帮助
MFC TCP/IP UDP
仿QQ聊天程序,基于MFC编写的TCP/IP、UDP的服务端和客户端通信程序。绝对能运行。
MFC,tcp,ip
mfc常用的对话框,按钮,资源,tcp,ip编程,配置文件的获取,路径的选取,文件的写入等
UDP网络通信,接收数据错误
[code=c]#include "stdafx.h"rn#include "vld.h"rn#include "CSocketRecv.h"rnCSocketRecv::CSocketRecv():Recv_flag(false),m_pRecvThread(NULL)rnrnrnrnrnCSocketRecv::~CSocketRecv()rnrn Recv_flag=false;rn m_pRecvThread=NULL;rnrnrnrnBOOL CSocketRecv::Create(CWnd* pWnd,UINT nLocalPort)rnrn rn if(Recv_flag==true)rn rn AfxMessageBox(_T("接收线程已经存在,不要重复创建"));rn return TRUE;rn rn elsern rn m_pWnd=pWnd;rn m_LocalPort=nLocalPort;//发送对象的端口号rn BOOL bRes=CAsyncSocket::Create(m_LocalPort,SOCK_DGRAM,FD_READ);rn if(bRes==false)rn rn AfxMessageBox(_T("本地套接字创建失败"));rn return FALSE;rn rn BOOL bOpt=TRUE;rn bRes=CAsyncSocket::SetSockOpt(SO_BROADCAST,&bOpt,sizeof(BOOL));rn m_pRecvThread=AfxBeginThread(DataRecvFunc,this);rn if(m_pRecvThread==NULL)rn rn AfxMessageBox(_T("数据发送线程创建失败!"));rn return FALSE;rn rn OutputDebugString(_T("接收线程暂停!"));rn m_pRecvThread->SuspendThread();rn Recv_flag=true;rn return bRes;rn rnrn//本设计数据接收采用异步方式, 当有数据到达时, 消息通知rn//函数OnReceive(UINT nErrorCode)会被自动调用, 该函数工作是rn//唤醒数据接收线程。rnvoid CSocketRecv::OnReceive(int nErrorCode)rnrn m_pRecvThread->ResumeThread();rn OutputDebugString(_T("接收线程恢复!")); rn CAsyncSocket::OnReceive(nErrorCode);rnrnrn//数据接收处理函数接收数据并将链人数据缓冲链表, 并通rn//知主线程数据已接收后自己挂起rnUINT CSocketRecv::DataRecvFunc(LPVOID pParam)rnrn CSocketRecv* pcsRecv=(CSocketRecv*)pParam;rn char RecvBuf[100];rn void* pBuf=(void*)RecvBuf;rn CString strRemoteAddress;rn UINT RemotePort;rn int nCount;rn while(pcsRecv->Recv_flag==true)rn rn nCount=pcsRecv->ReceiveFrom(pBuf,100,strRemoteAddress,RemotePort);rn pcsRecv->m_csLock.Lock();rn pcsRecv->m_DataList.AddTail(CString(RecvBuf,nCount));rn pcsRecv->m_csLock.Unlock();rn pcsRecv->m_pWnd->PostMessage(WM_USER_DATAREADY,0,0);rn pcsRecv->m_pRecvThread->SuspendThread();rn rn return 0;rnrnrnCString CSocketRecv::GetData()rnrn CString strData;rn m_csLock.Lock();rn strData=m_DataList.RemoveHead();rn m_csLock.Unlock();rn return strData;rn [/code]rn问题是ReceiveFrom()函数接收的第二个数据一直为0.比如我发送111,RecvBuf[0]=1,RecvBuf[1]=0,RecvBuf[2]=1.但是nCount是3.可以确定的是发送程序没有问题,用的本地IP。请大神指教。
TCP 接收数据
Tcp Server client
网络通信 - TCP
TCP vs UDP 1  传输控制协议/用户数据报协议 2  先建立连接再收发数据/不需建立连接直接收发数据 3  保证数据顺序/不保证 4  数据收发可靠/可能丢包 TCP的三次握手和四次挥手 三次握手 1  C发SYN给S,进入SYN_SEND状态。 2  S发ACK+SYN给C,进入SYN_RECV状态。 3  C发ACK给S,C和S进入ESTABLISHED状态
网络通信之TCP
1. 服务器端 建立连接阶段 (1)调用socket(),分配文件描述符,即监听套接字 (2)调用bind(),将套接字与本地IP地址和端口绑定 (3)调用listen(),监听特定端口,socket()创建的套接字是主动的, (4)调用listen使得该文件描述符为监听套接字,变主动为被动 (5)调用accept(),阻塞等待客户端连接 数据交互阶段 (1)调用read(),阻塞等待客户...
TCP网络通信
DELPHI做的TCP数据通信
网络通信--TCP
服务器端与客户端的交互 网络连接TCP协议 InetAddressapi InetAddress没有构造方法 CS方式api ServerSocket CS交互访问 利用线程来实现C-S来交互服务器端与客户端的交互 ①服务器程序创建一个ServerSocket套接字,调用accept()方法等待客户机来连接 ②客户端程序创建一个Socket,请求与服务器建立连接 ③服务器接收客户
网络通信 Tcp
Class  ServerSocket 服务器套接字 功能 等待来自网上的“请求"。  Method accept    等待客户机的链接,若链接 创建并返回一个套接字 socket; reader = new BufferedReader(new InputStreamReader(socket.getInputStream())); // BufferedReader 缓冲数据流
winsock实现基于TCP/IP的网络通信
能不能给一个实现它的方案拟定,急!rn谢谢了
vb.net TCP/IP Socket 服务端接收数据问题
我用TCP/IP Socket 进行异步通信,代码从网上拷的,如下rnrn线程rnPrivate Sub Listen()rn Dim strSend As Stringrn Dim sTime As Stringrn 'Dim sMessage As String = Nothingrn Tryrn tlTcpListen = New TcpListener(MyIPAdress, iPort)rn tlTcpListen.Start()rn tcClient = New TcpClientrn tcClient = tlTcpListen.AcceptTcpClient()rn Service_nsStream = tcClient.GetStream()rn srRead = New StreamReader(Service_nsStream)rn swWriter = New StreamWriter(Service_nsStream)rn rn While Truern Tryrn Dim sMessage As String = srRead.ReadLine 问题出在这一行,单步调试,首次srRead.ReadLine 为nothing,下面的语句不执行,客户端发来的消息收不到,当从服务端向对方发送消息后,就能正常通信了,这个地方srRead.ReadLine 一直在等待中,导致阻塞了吗?还是什么原因?如果在这行之前向客户端任意发条消息也可以正常通信,但是总觉得这个方法不喜欢,有好的解决方案吗?rnrn If Not sMessage Is Nothing Thenrn 处理rn End Ifrn Catch ex As Exceptionrn rn Finallyrn End Tryrn End Whilern Catch ex As System.Security.SecurityExceptionrn End Tryrn End Sub
请教: 关于TCP/IP接收数据Receive()
现有一台主机作为客户端通过网线分别与4个设备相连rnrn分别发送请求,然后接收响应,有什么方法使得效率最高?rnrn目前我是这么做的,感觉特别慢,还有个问题,如果100M的带宽,读100个字节的数据,大概需要多少时间?rnrnSendPackage03_ACQ()rnrn //4个设备的数据在不停的更新,如果不及时读取数据,就会丢失其中的一部分rn //一次将4个设备的数据全部读完,并且是依次对每个设备先发送请求,然后读其响应的数据rn for(int i=0;i<4;i++)rn rn send(i); //发送请求rn sleep(30); //等待一段时间30msrn receive(i); //接收响应 ,对每个设备需要读取100多个字节的数据rn rn rn 这里当第一个数据交换完毕以后,有可能第二,三,四个设备,有的数据包已经不丢失。rnrnrnrnwhile(1)rnrn SendPackage() //发送请求;rn Sleep(500); // 等待一段时间,发下一个数据包rnrn
基于LABVIEW的TCP/IP网络通信程序
基于LABVIEW的TCP/IP网络通信程序,包括简单的点对点通信,交互式通信,和点对多通信实例
TCP/IP网络通信测试工具(NIO Socket工具)
网络通信工具,服务端和客户端连接测试工具,可单条发送,循环发送,模拟多客户端发送,本工具可以作为网络通信工具或压力测试工具, Java NIO Socket编程
DM642 NDK TCP IP网络通信源码
DM642 NDK TCP IP网络通信源码(包括PC端的上位机TCP-IP源码,非常珍贵)
通过Winsock 实现TCP/ IP 网络通信
Sockets 编程模式是TCP/ IP 网络技术的一个标准,而Winsock 是Windows 下基于Sockets 模式的一个开放的网络<br>编程接口. 介绍了Winsock 的基本概念,分析了Winsock 的基本结构,并用一个应用实例说明通过Winsock 实现TCP/ IP 网络<br>通信的方法.
Android网络应用学习笔记(一)TCP/IP网络通信
学习《疯狂Android讲义》的记录。 1.使用ServerSocket创建TCP服务器端 省略TCP/IP协议概念,直接上代码。 在服务器端运行以下java代码。 import java.io.IOException; import java.io.OutputStream; import java.net.ServerSocket; import java.net.Socket;...
C# TCP/IP 网络通信数据接收与转发
如图所示,N个采集模块有N个IP地址。[b]工控机与N个采集模块连接,负责接收采集到的数据,并接收远程服务器命令,将数据转发至远程服务器。[/b]rn[color=#FF0000]我想问他们之间的连接流程。是工控机(IP.x)作为客户端,而远程机(IP.y)和采集模块(IP.1-N)都作为服务器吗?怎么设计这个过程或通信模式?[/color]rnrn[img=https://img-bbs.csdn.net/upload/201509/14/1442192978_66555.jpg][/img]
java网络通信:TCP/IP、Socket、长连接短连接
TCP/IP 协议组 TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。  在网络层有IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。  在传输层中有TCP协议与UDP协议。  在应用层有: (基于)TCP包括FTP、HTTP、TELNET、SMTP等协议  (基于)UDP包括DNS、TFTP等协议    SOCKET:不属于任何层,也不是协议,只...
基于LINUX的TCP/IP网络通信研究
基于LINUX的TCP/IP网络通信研究 基于LINUX的TCP/IP网络通信研究 基于LINUX的TCP/IP网络通信研究
《MFC网络通信》Part 3 一般TCP通信
《MFC网络通信》Part 3 一般TCP通信                                                                                                                                                                      任何通信
《MFC网络通信》Part 2 简单TCP通信
《MFC网络通信》Part 2 简单TCP通信                                                                                                                                           一般TCP通信软件都分为服务器端和客户端。 TCP服务器端由一个侦听So
MFC客户端客户端和服务器TCP网络通信
MFC客户端客户端和服务器TCP网络通信,支持服务器对某客户端,服务器对所有客户端,客户端之间的通信。TCP Socket基于CAsyncSocket的非阻塞异步通信。
MFC接收数据
C++写的一个上位机软件,可显示姿态信息,可以自行添加,修改。
MFC网络通信
服务器端:#include &quot;stdafx.h&quot;#include &quot;dataHandle.h&quot;#include &quot;mysql.h&quot;#include &amp;lt;WinSock2.h&amp;gt;#pragma comment(lib, &quot;ws2_32&quot;)void SockInit();int _tmain(int argc, _TCHAR* argv[]){ MYSQL m_sqlCon; mysql_in...
网络通信 - IP
big endian 低地址存放最高有效字节 IP地址 A:0~127  255.0.0.0 B:128~191  255.255.0.0 C:192~223  255.255.255.0 IPV6的优点 1  更大的地址空间 2^128 2  减少了路由表的长度,提高了路由器转发数据包的速度。 3  更高的安全性:IPV6允许在网络层进行数据加密
MFC windows网络编程 TCP/IP文件传输
windows网络编程 MFC下使用TCP/IP协议编写的文件传输程序希望能对于学习windows网络编程的初学者有定的帮助
相关热词 c#检测非法字符 c#双屏截图 c#中怎么关闭线程 c# 显示服务器上的图片 api嵌入窗口 c# c# 控制网页 c# encrypt c#微信网页版登录 c# login 居中 c# 考试软件