服务端为什么会这样呢 ?
运行以下程序后服务断自动结束了,我想recvfrom()应该是等待客户锻发来消息再进行响应了,而我的客户端程序没运行,也就是没收到消息服务端就自动结束了,
代码如下:(基于UDP的通信)
#include <stdio.h>
#include <winsock2.h>
void main()
{
WORD ver;
WSADATA wsadata;
int flag;
ver = MAKEWORD(1,1);
flag=WSAStartup(ver,&wsadata);
if(flag !=0)
return ;
if(LOBYTE(wsadata.wVersion) != 1 || HIBYTE(wsadata.wVersion) !=1)
{
WSACleanup();
return ;
}
SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addr;
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addr.sin_family=AF_INET;
addr.sin_port=htons(6000);
bind(sockSrv,(SOCKADDR *)&addr,sizeof(SOCKADDR));
char srvBuf[100]={0};
SOCKADDR_IN addr2;
int len=sizeof(SOCKADDR);
recvfrom(sockSrv,srvBuf,100,0,(SOCKADDR *)&addr2,&len);//程序运行到这里应该会类似监听啊
printf("收到的是 :%s",srvBuf);
closesocket(sockSrv);
WSACleanup();
}
代码如下:(基于UDP的通信)
#include <stdio.h>
#include <winsock2.h>
void main()
{
WORD ver;
WSADATA wsadata;
int flag;
ver = MAKEWORD(1,1);
flag=WSAStartup(ver,&wsadata);
if(flag !=0)
return ;
if(LOBYTE(wsadata.wVersion) != 1 || HIBYTE(wsadata.wVersion) !=1)
{
WSACleanup();
return ;
}
SOCKET sockSrv=socket(AF_INET,SOCK_DGRAM,0);
SOCKADDR_IN addr;
addr.sin_addr.S_un.S_addr=htonl(INADDR_ANY);
addr.sin_family=AF_INET;
addr.sin_port=htons(6000);
bind(sockSrv,(SOCKADDR *)&addr,sizeof(SOCKADDR));
char srvBuf[100]={0};
SOCKADDR_IN addr2;
int len=sizeof(SOCKADDR);
recvfrom(sockSrv,srvBuf,100,0,(SOCKADDR *)&addr2,&len);//程序运行到这里应该会类似监听啊
printf("收到的是 :%s",srvBuf);
closesocket(sockSrv);
WSACleanup();
}
...全文
相关推荐
对产品经理而言,为什么要求懂技术?.docx
为什么产品经理需要懂技术?作为一名产品经理,为什么需要懂技术?这是一个经常被讨论的问题。今天,我们将深入探讨这个问题,并总结出产品经理需要懂的技术知识。
服务端没有listen客户端发起连接建立 会发生什么
但是,如果服务端没有listen客户端发起连接建立,那么会发生什么呢?答案是,服务端会回复一个RST包,以断开连接。这是为什么呢?
网易游戏服务端十二小时入门ppt.pdf
一、课程前的准备工作和思考林伟讲师通过提出几个问题来激发听众的思考:为什么需要学习服务器开发?学习服务器开发有什么好处?
Vue 2.0 服务端渲染入门介绍
此外,服务端渲染还能提升初次加载页面的速度,特别是对于网络环境较差的用户,能提供更快的首屏加载体验。为什么需要服务端渲染呢?
SpringBoot服务端数据校验过程详解
为什么需要服务端数据校验?客户端的数据有效性验证并不是安全可靠的,因为客户端的验证可以被绕过和欺骗。模拟 HTTP 请求可以发送恶意数据到后台,导致严重的安全问题。


网络编程
