客户端能发消息给服务器,但服务器不能发给客户端
void CTCPDlg::OnBnClickedOk() //发送
{
if (m_clientSocket.m_bConnected)//客户端
{
m_clientSocket.m_nLength=MsgEdit.GetWindowText
(m_clientSocket.m_szBuffer, sizeof(m_clientSocket.m_szBuffer));
m_clientSocket.AsyncSelect(FD_WRITE);
MsgEdit.SetWindowText("");
}
else if(m_srvrSocket.m_bConnected)//服务器
{
m_srvrSocket.m_nLength=MsgEdit.GetWindowText
(m_srvrSocket.m_szBuffer, sizeof(m_srvrSocket.m_szBuffer));
/*int ret = m_srvrSocket.Send(m_srvrSocket.m_szBuffer, m_srvrSocket.m_nLength);
if(ret == SOCKET_ERROR)
if(GetLastError()==WSAEWOULDBLOCK)
AfxMessageBox("The socket is marked as nonblocking and the requested operation would block");
else if(GetLastError()==WSAEINVAL)
AfxMessageBox("The socket has not been bound with Bind");
else if(GetLastError()==WSAESHUTDOWN)
AfxMessageBox("The socket has been shut down");
else if(GetLastError()==WSAENOTCONN)
AfxMessageBox("The socket is not connected");*/
m_srvrSocket.AsyncSelect(FD_WRITE);
MsgEdit.SetWindowText("");
}
else
AfxMessageBox("Not Connected!");
}
void MySock::OnSend(int nErrorCode)
{
Send(m_szBuffer,m_nLength,0);
m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
//继续提请一个“读”的网络事件,接收Server消息
AsyncSelect(FD_READ);
CAsyncSocket::OnSend(nErrorCode);
}
看了两天,不知道哪里出错,单步调试发现,服务器端根本没有触发OnSend,而客户端正常。
如果加上上面的注释部分,服务器发送会提示"The socket is not connected"。
还请各位大侠救命!
...全文
相关推荐
Java版钉钉群定时发消息(读取本地txt)
总结来说,实现Java版钉钉群定时发消息(读取本地txt)需要以下步骤:1. 创建钉钉群机器人并获取Webhook地址。2. 使用Java HTTP客户端发起POST请求,发送消息到Webhook。
通过Python实现微信自动发消息
启动微信客户端。2. 使用`pyautogui`定位到登录按钮并点击。3. 输入账号和密码(可预先存储),再次使用`pyautogui`模拟输入。4. 登录成功后,找到通讯录界面,并截取屏幕。5.
python操作微信自动发消息的实现(微信聊天机器人)
总的来说,Python操作微信自动发消息的核心在于模拟用户输入和交互,通过系统级别的API来控制应用程序。虽然这种方法有一定的实用性,但稳定性受到微信客户端变化的影响,且不适用于大规模的自动化任务。
c的socket服务器跟客户端
该项目实现了基于TCP协议的C++ socket通信,包含客户端和服务器端。服务器绑定本地6000端口,监听并接受客户端连接,进行最多五次双向消息交互。客户端连接服务器后可收发消息,支持循环聊天。程序
瑞友客户端登录GS_ERP时,报错: 由于安全许可证服务器不能提供许可证,连接被中断的解决方法
瑞友客户端登录GS_ERP时,报错:由于安全许可证服务器不能提供许可证,连接被中断的解决方法瑞友客户端登录GS_ERP时,报错:由于安全许可证服务器不能提供许可证,连接被中断的解决方法是由于远程桌面连接协议


网络编程
