有关socket编程的一个小问题

reen 2005-03-05 03:05:50
以前没接触过网络编程 现在要写个关于网络的程序
结果一下子就错了
accept函数的原形如下
SOCKET accept(
SOCKET s,
struct sockaddr FAR* addr,
int FAR* addrlen
);
那位高人解释一下什么是int FAR* 类型

SOCKET ListeningSocket;
SOCKADDR_IN ClientAddr;
accept(ListeningSocket, (SOCKADDR *) &ClientAddr,&ClientAddrLen)//此行中第三个参数不知应怎么写,写些什么东西,诚望指教
...全文
102 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
梦想家大魔王 2005-03-06
  • 打赏
  • 举报
回复
int FAR* addrlen指向一个整数,而这个整数保存了struct sockaddr FAR* addr的长度值。
连接错误,如果正确包含了头文件,那么很可能就是你没有在工程中加入需要的库文件。
你可以在文件中加入这样一行:
#pragma comment(lib, "ws2_32")
或者在
Project->Settings->Link中的Object/Library Modules
选项的末尾加入
ws2_32.lib
jingtan 2005-03-06
  • 打赏
  • 举报
回复
关于连接错误,有可能是头文件本身的错误(如果是一些新的IDE的话), 我记得C++-Free(名字也记不太清楚了)的某个版本的winsock2.h就有错误
jingtan 2005-03-06
  • 打赏
  • 举报
回复
这样写
int addrlen=sizeof(SOCKADDR_IN);
accept(ListeningSocket, (SOCKADDR *) &ClientAddr,&addrlen);

far指针就是远程指针, windows下的指针都是远程指针
reen 2005-03-05
  • 打赏
  • 举报
回复
还有一个问题
我做的这个测试中有 #include <winsock2.h>
可是在链接的时候总是报 unresolved external symbol __imp__WSACleanup 类似的错误
不知是为什么
望指教
reen 2005-03-05
  • 打赏
  • 举报
回复
就这么写吗?
可是编译不通过啊
accept(ListeningSocket, (SOCKADDR *) &ClientAddr,&ClientAddrLen)//
上边第三个参数没有进行定义
我看到有位高手是这么写的:
accept(ListeningSocket, (SOCKADDR *) &ClientAddr,sizeof(ClientAddr))//
可是第三个参数要求不是指针吗?编译还是不通过
还有就是int far* 这到底是什么意思啊 特别是哪个far
sharkhuang 2005-03-05
  • 打赏
  • 举报
回复
就这么写

69,336

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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