我正在参加一个networking课,教授正在读这本书。 不用说,我不知道我在做什么。 我们的学期项目是从我们的教科书中复制代码并build立一个客户 – 服务器networking。 直接复制本书中的代码而不做任何修改。
这本书在代码中有错误(缺less分号,额外的版本),但我至less编译了代码。 但是,我遇到了一堆链接错误。
示例:Error 1错误LNK2019:在函数_main中引用的未parsing的外部符号impsendto @ 24 C: Users Documents Visual Studio 2010 Projects Client_Server Client_Server Client_Server Server.obj Client_Server
我查了错误代码,我想代码试图链接到头文件中不存在的定义。 我有一个困难的时间修复LNK错误与语法错误。 但就像我说,我不知道如何去解决这个问题。 我正在发送服务器端的代码,我遇到了客户端相同的错误。
我怎样才能取代C#窗体可执行的应用程序图标?
开箱即用的Qt 5 HTML模板
为什么调用大尺寸的mmap()不会失败?
如何从CreateWindowEx()窗口获取宽度和高度? C ++
无法分配请求的地址,C ++ UDP套接字
include <stdio.h> include <string.h> include <WinSock2.h> include <WinSock.h> include <stdint.h> include <time.h> int main(void) { int s; int len; char buffer[256]; struct sockaddr_in servAddr; struct sockaddr_in clntAddr; int clntAddrLen; //length of client socket addre //Build local (server) socket add memset(&servAddr,sizeof(servAddr)); servAddr.sin_family = AF_INET; servAddr.sin_port = htons(21); servAddr.sin_addr.s_addr = htonl(INADDR_ANY); //create socket if((s=socket(PF_INET,SOCK_DGRAM,0) <0 )) { perror("Error: Socket Failed!"); exit(1); } //bind socket to local address and port if((bind(s,(struct sockaddr*)&servAddr,sizeof(servAddr))<0)) { perror("Error:bind Failed!"); exit(1); } for(;;) { len = recvfrom(s,buffer,sizeof(buffer),(struct sockaddr*)&clntAddr,&clntAddrLen); //send string sendto(s,len,sizeof(clntAddr)); } }
任何提示,链接到有用的信息,或build议,将不胜感激。 我尝试阅读课本,但我完全失去了。 而且,这是我们整个学期唯一的代码相关任务。 其他的一切都使用数据包嗅探器收集数据包。 从字面上来到课堂,并说第X页的复制和运行代码。
GetFreediskSpaceEx如何返回(看似)错误的磁盘空间量?
在linux中并行处理
我应该为我的应用程序使用进程还是线程?
通过TCP传输string比较错误
您需要链接库Ws2_32.lib以使用winsock。 在使用任何其他winsock函数之前,您还必须调用WSAStartup (这不会导致当前的错误,但会在修复缺少的库问题时导致问题)。
起初,我会尝试帮助使用你的最后一个评论:让我们假设你正在使用Visual Studio(我认为这是Windows编程启动winsock最好的选择,因为Microsoft关心Windows基本库是最新的,他们兼容有用msdn支持)。
如果您遇到如下错误:1> asdf.obj:错误LNK2001:无法解析的外部符号_ imp _WSAStartup @ 8这意味着ws2_32.lib链接不正确。 要在解决方案资源管理器中右键单击您的项目,请转到链接器 – >输入,并将ws2_32.lib添加到其他依赖项。 这个库是Windows SDK的一部分(我猜它与大多数版本的Visual Studio一起安装),所以请确保您的计算机上存在该文件。
而现在如何在没有遵循古老教程的情况下做出正确的现代风格的项目:
您需要添加的库是Winsock2.h。 Winsock.h是旧的(不推荐使用)版本,不需要在新的应用程序中使用它。 要开始使用套接字,您需要调用函数WSAStartup,为此,您必须在开始时初始化struct WSADATA。 基本的代码如下所示:
#include <Winsock2.h> int main() { WSADATA mywsadata; //your wsadata struct,it will be filled by WSAStartup WSAStartup(0x0202,&mywsadata); //0x0202 refers to version of sockets we want to use. //here goes your code with socket related things return 0; }
如需更多帮助,请点击这里
注意:因为问题是旧的,我不知道它的作者会找到我的答案有帮助我想帮助另一个用户看这个问题
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。