急救:初学网络编程,用,第一个例子就出问题.

Phenix_Nirvana 2004-11-20 07:18:22
这是服务器端代码,运行时提示
We are awaiting a connection on port 5150.
accept failed with error 10014
这是怎么回事??
源代码如下:

#include <winsock2.h>
#include <stdio.h>

void main(void)
{
WSADATA wsaData;
SOCKET ListeningSocket;
SOCKET NewConnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int ClientAddrLen;
int Port = 5150;
int Ret;
char DataBuffer[1024];

if ((Ret = WSAStartup(MAKEWORD(2,2), &wsaData)) != 0)
{
printf("WSAStartup failed with error %d\n", Ret);
return;
}


if ((ListeningSocket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP))
== INVALID_SOCKET)
{
printf("socket failed with error %d\n", WSAGetLastError());
WSACleanup();
return;
}


ServerAddr.sin_family = AF_INET;
ServerAddr.sin_port = htons(Port);
ServerAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);



if (bind(ListeningSocket, (SOCKADDR *)&ServerAddr, sizeof(ServerAddr))
== SOCKET_ERROR)
{
printf("bind failed with error %d\n", WSAGetLastError());
closesocket(ListeningSocket);
WSACleanup();
return;
}


if (listen(ListeningSocket, 5) == SOCKET_ERROR)
{
printf("listen failed with error %d\n", WSAGetLastError());
closesocket(ListeningSocket);
WSACleanup();
return;
}

printf("We are awaiting a connection on port %d.\n", Port);



if ((NewConnection = accept(ListeningSocket, (SOCKADDR *) &ClientAddr,
&ClientAddrLen)) == INVALID_SOCKET)
{
printf("accept failed with error %d\n", WSAGetLastError());
closesocket(ListeningSocket);
WSACleanup();
return;
}


printf("We successfully got a connection from %s:%d.\n",
inet_ntoa(ClientAddr.sin_addr), ntohs(ClientAddr.sin_port));



closesocket(ListeningSocket);



printf("We are waiting to receive data...\n");

if ((Ret = recv(NewConnection, DataBuffer, sizeof(DataBuffer), 0))
== SOCKET_ERROR)
{
printf("recv failed with error %d\n", WSAGetLastError());
closesocket(NewConnection);
WSACleanup();
return;
}

printf("We successfully received %d byte(s).\n", Ret);



printf("We are now going to close the client connection.\n");

closesocket(NewConnection);


WSACleanup();

...全文
280 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
lovelyxiaoyu 2004-11-25
  • 打赏
  • 举报
回复
void main(void)
{
WSADATA wsaData;
SOCKET ListeningSocket;
SOCKET NewConnection;
SOCKADDR_IN ServerAddr;
SOCKADDR_IN ClientAddr;
int ClientAddrLen;
int Port = 5150;
int Ret;
char DataBuffer[1024];
ClientAddrLen = sizeof(SOCKADDR_IN);

~~烂书,不负责

friendzj 2004-11-25
  • 打赏
  • 举报
回复
楼上的,为什么说初学者用这本书要小心??这本书问题很多?
freeshoot 2004-11-25
  • 打赏
  • 举报
回复
照我的试试:

// 在accept前加上这句:
ClientAddrLen = sizeof(SOCKADDR);

if ((NewConnection = accept(ListeningSocket, (SOCKADDR *) &ClientAddr,
&ClientAddrLen)) == INVALID_SOCKET)
DentistryDoctor 2004-11-25
  • 打赏
  • 举报
回复
你有这本书的配套光盘?
celerityok 2004-11-25
  • 打赏
  • 举报
回复
mark!
HunterForPig 2004-11-25
  • 打赏
  • 举报
回复
初学者用这本书,要小心哦!
gdy119 2004-11-25
  • 打赏
  • 举报
回复
10014 服务器提供的IP地址错误!
象这样绝对没问题!
serv.sin_addr.s_addr = htonl(INADDR_ANY);
serv.sin_family=AF_INET;
serv.sin_port=htons(2406);

wenxinfly 2004-11-25
  • 打赏
  • 举报
回复
那么给初学者提供几本书吧!!
Phenix_Nirvana 2004-11-24
  • 打赏
  • 举报
回复
ip地址设定了,还是不行。
lonenomad 2004-11-21
  • 打赏
  • 举报
回复
我试了一试,改了之后还是有错误,不过我这台机器上没有网卡,呵呵,不知是不是这个原因,我的是BIND错误。
ChinaBJZ 2004-11-20
  • 打赏
  • 举报
回复
ServerAddr.sin_addr.S_un.S_addr = htonl(INADDR_ANY);
ServerAddr.sin_addr.S_un.S_addr = INADDR_ANY;

应该是这样的吧。
Phenix_Nirvana 2004-11-20
  • 打赏
  • 举报
回复
设定之后还是出现同样错误!!!!

oyljerry 2004-11-20
  • 打赏
  • 举报
回复
如上设定地址就好了
Jarrylogin 2004-11-20
  • 打赏
  • 举报
回复
//设定地址
serv.sin_addr.s_addr=inet_addr("211.65.60.18");
serv.sin_family=AF_INET;
serv.sin_port=htons(2406);
addlen=sizeof(serv);
Jarrylogin 2004-11-20
  • 打赏
  • 举报
回复
你的IP地址没设定
zhutao9_21 2004-11-20
  • 打赏
  • 举报
回复
系统检测到在一个调用中尝试使用指针参数时的无效指针地址。
Phenix_Nirvana 2004-11-20
  • 打赏
  • 举报
回复
这是服务器端,怎么会错了??代码里面并没有制定地址阿?

应该怎么解决呢?
oyljerry 2004-11-20
  • 打赏
  • 举报
回复
WSAEFAULT(10014) Bad address.
地址错误
内容概要:本文围绕【语音增强】领域中的组稀疏信号去噪问题展开研究,提了一种结合非凸正则化与凸优化理论的去噪方法,旨在提升含噪语音信号的可懂度与质量。文章系统阐述了组稀疏信号模型的构建机制,引入非凸正则项以更精确地逼近理想稀疏性,克服传统凸正则化在稀疏表达上的局限性,并采用高效的凸优化算法保障模型求解的稳定性与收敛性。整个算法流程在Matlab平台上完整实现,涵盖语音信号预处理、稀疏系数求解、去噪重构等关键环节,并配套提供可复现的代码资源,便于研究人员进一步验证与拓展。该方法在保留数学可处理性的同时显著增强了去噪性能,尤其适用于低信噪比环境下的语音恢复任务。; 适合人群:具备一定信号与系统、数字信号处理理论基础,熟悉稀疏表示与最优化方法,且拥有Matlab编程能力的研究生、科研人员及从事语音增强、音频工程、通信系统等相关领域的工程技术人员。; 使用场景及目标:①应用于语音通信、智能助听设备、语音识别前端等对语音质量要求较高的实际系统中;②作为高校课程或科研项目中的教学案例,帮助深入理解稀疏表示、非凸优化与凸优化算法的融合机制;③为后续研究非凸正则化在图像去噪、生物医学信号处理等其他稀疏恢复问题中的性能优势提供理论依据与实现范例。; 阅读建议:建议读者结合所提供的Matlab代码逐模块分析,重点理解非凸正则项的设计动机及其对稀疏性的增强作用,深入掌握优化求解过程中迭代算法的实现细节;同时可通过调整正则化参数、测试不同噪声类型(如白噪声、车间噪声)与强度的语音信号,系统评估算法的鲁棒性、收敛速度与去噪效果,从而全面把握该方法的优势与潜在局限。
内容概要:本文系统介绍了节点不连续伽辽金方法(NDG)在求解线性和非线性平流方程中的一维数值实现过程,并配套提供了完整的Matlab代码实现。该方法作为一种高精度、高分辨率的数值离散化技术,特别适用于对流主导的偏微分方程求解,在处理间断解和保持数值稳定性方面具有突优势。文章详细阐述了NDG方法的核心理论基础,包括弱形式构造、局部基函数选取、数值通量处理、时间推进格式(如显式Runge-Kutta方法)以及边界条件的实施策略。通过多个典型算例(如线性对流、Burgers方程等)的仿真分析,充分验证了该方法在捕捉激波、避免非物理振荡及保持高阶精度方面的有效性。结合代码实践,读者可深入掌握NDG方法的算法设计与编程实现的关键环节。; 适合人群:具备偏微分方程数值解法、有限元方法或计算流体力学基础知识,熟悉Matlab编程语言,从事科学计算、工程仿真、应用数学或相关领域研究的研究生、科研人员及工程师。; 使用场景及目标:①用于高阶数值方法的教学演示与学习,加深对间断伽辽金方法的理解;②应用于流体力学、气象模拟、环境科学等领域中对强对流现象的精确数值模拟;③作为复杂物理系统仿真中对流项高精度离散化的核心技术支撑;④为科研工作者开发定制化求解器提供可复用的算法原型与代码参考。; 阅读建议:建议读者结合Matlab代码逐行调试与运行,对照理论推导理解每个模块的功能实现,重点关注数值通量、质量矩阵和刚度矩阵的构造过程。同时推荐参阅相关经典文献以深化对NDG方法数学理论和收敛性分析的理解,从而更好地将该方法迁移应用于自身研究课题中。

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧