怎么在VS2005里面调试socket函数

Rain208 2008-10-23 07:10:43
#pragma comment(lib,"ws2_32lib")
#include "stdafx.h"
#include <winsock2.h>

#define _mailto "10.10.5.23"
#define DATANUM 6

void HandleError(char*);
int _tmain(int argc, _TCHAR* argv[])
{
WSAData date;
WSAStartup(WINSOCK_VERSION,&date);
SOCKET sock = socket(AF_INET,SOCK_DGRAM,0);
struct sockaddr_in to;
memset(&to,0,sizeof(to));
to.sin_addr.S_un.S_addr = inet_addr(_mailto);
to.sin_family = AF_INET;
to.sin_port = htons(8888);
char *buf = "snail";
int res = sendto(sock,buf,DATANUM,0,(struct sockaddr *)&to,sizeof(to));
if(res == SOCKET_ERROR)
{

printf("error!");
//HandleError("sendto");

} else
printf("send to %d bytes\n",res);

closesocket(sock);
return 0;
}

/*
void HandleError(char *msg)
{
int errCode = WSAGetLastError();
char info[65] = {0};
strcpy(info,);
}*/


为什么不能运行

错误提示:

1>------ ビルド開始: プロジェクト: sock, 構成: Debug Win32 ------
1>リンクしています...
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__closesocket@4 が関数 _wmain で参照されました。
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__sendto@24 が関数 _wmain で参照されました。
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__htons@4 が関数 _wmain で参照されました。
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__inet_addr@4 が関数 _wmain で参照されました。
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__socket@12 が関数 _wmain で参照されました。
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__WSAStartup@8 が関数 _wmain で参照されました。
1>D:\myProgram\C++\sock\im\Debug\sock.exe : fatal error LNK1120: 外部参照 6 が未解決です。
1>ビルドログは "file://d:\myProgram\C++\sock\im\sock\Debug\BuildLog.htm" に保存されました。
1>sock - エラー 7、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
谢谢...
...全文
273 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rain208 2008-10-24
  • 打赏
  • 举报
回复
在我的日语VS2005上 不能运行
但是把#pragma comment(lib,"ws2_32.lib")
放在#include <xxx.h>
下面就能编译通过
但是运行还是不行
可能是我的vs的问题吧
谢谢大家了
baihacker 2008-10-24
  • 打赏
  • 举报
回复

send to 6 bytes
Press any key to continue
--------------------Configuration: test2 - Win32 Debug--------------------
Compiling...
main.cpp
Linking...
Creating browse info file...

test2.exe - 0 error(s), 0 warning(s)

#pragma comment(lib,"ws2_32.lib")
#include <winsock2.h>
#include <tchar.h>
#include <stdio.h>
#define _mailto "10.10.5.23"
#define DATANUM 6

void HandleError(char*);
int _tmain(int argc, _TCHAR* argv[])
{
WSAData date;
WSAStartup(WINSOCK_VERSION,&date);
SOCKET sock = socket(AF_INET,SOCK_DGRAM,0);
struct sockaddr_in to;
memset(&to,0,sizeof(to));
to.sin_addr.S_un.S_addr = inet_addr(_mailto);
to.sin_family = AF_INET;
to.sin_port = htons(8888);
char *buf = "snail";
int res = sendto(sock,buf,DATANUM,0,(struct sockaddr *)&to,sizeof(to));
if(res == SOCKET_ERROR)
{

printf("error!");
//HandleError("sendto");

} else
printf("send to %d bytes\n",res);

closesocket(sock);
return 0;
}
baihacker 2008-10-24
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 Rain208 的回复:]
为什么啊?这样就行
[/Quote]
不是说了么,你写错了...
Rain208 2008-10-24
  • 打赏
  • 举报
回复
为什么啊?这样就行
boys2002 2008-10-24
  • 打赏
  • 举报
回复
#pragma comment (lib,"ws2_32.lib")
放到include下面去就可以了~
nickywang2004 2008-10-24
  • 打赏
  • 举报
回复
#pragma comment (lib,"ws2_32.lib")
放到include下面去就可以了~
Rain208 2008-10-24
  • 打赏
  • 举报
回复
还有没有别的加载方式
现在公司是日语操作系统 装的VC也是日语版的
我找了project-> 下面没有不知道什么原因
太乙 2008-10-24
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 Rain208 的回复:]
找不到库文件
找不到怎么加载文件 详细设置里面没有link选项
不知道是不是程序装的有问题
[/Quote]

咋会没有呢?project->settings->Link选项卡啊!
Rain208 2008-10-24
  • 打赏
  • 举报
回复
找不到库文件
找不到怎么加载文件 详细设置里面没有link选项
不知道是不是程序装的有问题
Rain208 2008-10-24
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 baihacker 的回复:]
C/C++ code

#pragma comment(lib,"ws2_32lib")
改成
#pragma comment(lib,"ws2_32.lib")

//你少加了一个小圆点

[/Quote]
还是不行
1>------ ビルド開始: プロジェクト: sock, 構成: Debug Win32 ------
1>リンクしています...
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__closesocket@4 が関数 _wmain で参照されました。
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__sendto@24 が関数 _wmain で参照されました。
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__htons@4 が関数 _wmain で参照されました。
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__inet_addr@4 が関数 _wmain で参照されました。
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__socket@12 が関数 _wmain で参照されました。
1>sock.obj : error LNK2019: 未解決の外部シンボル __imp__WSAStartup@8 が関数 _wmain で参照されました。
1>D:\myProgram\C++\sock\im\Debug\sock.exe : fatal error LNK1120: 外部参照 6 が未解決です。
1>ビルドログは "file://d:\myProgram\C++\sock\im\sock\Debug\BuildLog.htm" に保存されました。
1>sock - エラー 7、警告 0
========== ビルド: 0 正常終了、1 失敗、0 更新、0 スキップ ==========
beingstudio 2008-10-23
  • 打赏
  • 举报
回复
.......
我也发现了
lsldd 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 ok208043624 的回复:]
引用 7 楼 mabo321 的回复:
引用 6 楼 zmlovelx 的回复:
引用 5 楼 baihacker 的回复:
C/C++ code#pragmacomment(lib,"ws2_32lib")改成#pragmacomment(lib,"ws2_32.lib")//你少加了一个小圆点

眼好细


……

-_-!
[/Quote]
高手
ok208043624 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mabo321 的回复:]
引用 6 楼 zmlovelx 的回复:
引用 5 楼 baihacker 的回复:
C/C++ code#pragmacomment(lib,"ws2_32lib")改成#pragmacomment(lib,"ws2_32.lib")//你少加了一个小圆点

眼好细


……
[/Quote]
-_-!
mabo321 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 zmlovelx 的回复:]
引用 5 楼 baihacker 的回复:
C/C++ code#pragmacomment(lib,"ws2_32lib")改成#pragmacomment(lib,"ws2_32.lib")//你少加了一个小圆点

眼好细
[/Quote]

……
帅得不敢出门 2008-10-23
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 baihacker 的回复:]
C/C++ code#pragmacomment(lib,"ws2_32lib")改成#pragmacomment(lib,"ws2_32.lib")//你少加了一个小圆点
[/Quote]
眼好细
baihacker 2008-10-23
  • 打赏
  • 举报
回复


#pragma comment(lib,"ws2_32lib")
改成
#pragma comment(lib,"ws2_32.lib")

//你少加了一个小圆点
wudeshou82666 2008-10-23
  • 打赏
  • 举报
回复
就是少了库
在你的预编译头文件里面加入#pragma comment(lib,"Ws2_32.lib")这个语句试试吧
Rain208 2008-10-23
  • 打赏
  • 举报
回复
哦 谢谢试一下
谢谢了
liumingrong 2008-10-23
  • 打赏
  • 举报
回复
工程中添加socket库,例如
工程菜单中选择设置,弹出Project Setting,选择Link,在“对象/库模块”中输入Ws2_32.lib
Rain208 2008-10-23
  • 打赏
  • 举报
回复
编译没有错误
但是运行不了。。。
谢谢很急。。。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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