日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于vs2008上的socket链接错误问题

發布時間:2023/12/2 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于vs2008上的socket链接错误问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

昨天想用socket做一個簡單的windows程序,?先拿來了以前在vc6.0上做的一小段代碼,?竟然發現在vs2008上不能運行.出現了好多鏈接錯誤,?研究了好半天也沒有發現是怎么回事.>下來是代碼和?錯誤信息.

正在鏈接...> 1>tem.obj?:?error?LNK2019:?無法解析的外部符號?__imp__closesocket@4,該符號在函數?_main?中被引用1>tem.obj?:?error?LNK2019:?無法解析的外部符號?__imp__inet_ntoa@4,該符號在函數?_main?中被引用1>tem.obj?:?error?LNK2019:?無法解析的外部符號?__imp__sendto@24,該符號在函數?_main?中被引用1>tem.obj?:?error?LNK2019:?無法解析的外部符號?__imp__recvfrom@24,該符號在函數?_main?中被引用 1>tem.obj?:?error?LNK2019:?無法解析的外部符號?__imp__bind@12,該符號在函數?_main?中被引用 1>tem.obj?:?error?LNK2019:?無法解析的外部符號?__imp__htons@4,該符號在函數?_main?中被引用 1>tem.obj?:?error?LNK2019:?無法解析的外部符號?__imp__htonl@4,該符號在函數?_main?中被引用 1>tem.obj?:?error?LNK2019:?無法解析的外部符號?__imp__socket@12,該符號在函數?_main?中被引用 1>tem.obj?:?error?LNK2019:?無法解析的外部符號?__imp__WSACleanup@0,該符號在函數?_main?中被引用 1>tem.obj?:?error?LNK2019:?無法解析的外部符號?__imp__WSAStartup@8,該符號在函數?_main?中被引用 1>d:\My?Documents\Visual?Studio?2008\Projects\tem\Debug\tem.exe?:?fatal?error?LNK1120:?10?個無法解析的外部命令
代碼是:

#include<Winsock2.h> #include<stdio.h> int?main() { WORD?wVersionRequested; WSADATA?wsaData; int?err; wVersionRequested?=?MAKEWORD(?1,?1?); err?=?WSAStartup(?wVersionRequested,?&wsaData?); if?(?err?!=?0?)?{ return?1; } if?(?LOBYTE(?wsaData.wVersion?)?!=?1?|| HIBYTE(?wsaData.wVersion?)?!=?1?)?{ WSACleanup(?); return?1;? } SOCKET?sockSrv=socket(AF_INET,SOCK_DGRAM,0); sockaddr_in?addrSrv; addrSrv.sin_addr.S_un.S_addr=htonl(INADDR_ANY); addrSrv.sin_family=AF_INET; addrSrv.sin_port=htons(4546);
bind(sockSrv,(sockaddr*)&addrSrv,sizeof(sockaddr)); char?recvBuf[100]; char?sendBuf[100]; char?temBuf[200]; sockaddr_in?addrClient; int?len=sizeof(sockaddr); while(1){ recvfrom(sockSrv,recvBuf,100,0,(SOCKADDR?*)&addrClient,&len); if('q'==recvBuf[0]){ sendto(sockSrv,"q",strlen("q")+1,0,(SOCKADDR?*)&addrClient,len); printf("Chat?end!\n"); break;
} sprintf(temBuf,"%s?say:?%s",inet_ntoa(addrClient.sin_addr),recvBuf); printf("%s\n",temBuf); printf("Please?input?data:\n"); gets(sendBuf); sendto(sockSrv,sendBuf,strlen(sendBuf)+1,0,(SOCKADDR?*)&addrClient,len); } closesocket(sockSrv); WSACleanup();
}
編譯沒有問題的,?主要是鏈接上的錯誤,所以就去查msdn。第一次竟然沒有發現是哪的錯,后在csdn上search了一下后才發現好像是在08上寫socket要加上新的鏈接庫??Ws2_32.lib.再查msdn,要求如下: Header???Declared?in?Winsock2.h.
Library???Use?Ws2_32.lib.
DLL????????Requires?Ws2_32.dll.
加上后果然成功了。


在新的08上要加入鏈接庫?方法:項目>屬性->配置屬性->鏈接器->輸入?:附加依賴項?中加入要鏈接的庫即可。

總結

以上是生活随笔為你收集整理的关于vs2008上的socket链接错误问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。