一个极简单的例子,就是通不过。请高手指点迷津,

tliu82 2007-05-31 11:13:56
还有请问SOCKET socket(AF_INET,SOCK_STREAM,0)
已经建立了socke为什么还要accept返回socket类型
着两个socket区别是什么
//extern "C"
//{
#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 2;
}

//创建用于监听的套接字
SOCKET sockSrv = socket(
AF_INET, /* tcp/ip 协议 */
SOCK_STREAM, /* tcp or udp */
0 /* 自动 */
);
SOCKADDR_IN addrSrv; /* */
addrSrv.sin_addr.S_un.S_addr = htonl(INADDR_ANY); /* */
addrSrv.sin_family = AF_INET; /* 地址簇为ip地址 */
addrSrv.sin_port = htons(6000); /* 端口 */

//bind套接字绑定
bind(sockSrv,(SOCKADDR*)&addrSrv,sizeof(SOCKADDR));

//将套接字设为监听模式,准备接受客户请求
listen(sockSrv,5); /*
套接字描述符,等待链接
队列的最大长度 ( 如果
设为SOMAXCONN,那么下层
就给个可能的最大值 )
*/

SOCKADDR_IN addrClient;
int len=sizeof(SOCKADDR);

while(1)
{
//等待客户请求到来
SOCKET sockConn=accept(
sockSrv, //套接字描述符
(SOCKADDR*)&addrClient, //客户机信息(ip && port)保存的地址
&len //地址信息的长度
);

char sendBuf[100];
//发送数据
sprintf(
sendBuf, //
"welcome %s ", //
inet_ntoa(addrClient.sin_addr) //
);
send(
sockConn, //套接字
sendBuf, //发送内容缓冲区的地址
strlen(sendBuf)+1, //缓冲区的长度
0 //flag一般为0
);

char recvBuf[100];
//接收数据
recv(
sockConn, //套接字
recvBuf, //接收预留的缓冲区
100, //缓冲区长度
0 //flag一般为0
);
//打印接收的数据
printf("%s\n",recvBuf);
closesocket(sockConn);
}
return 0;
}
...全文
583 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
颖哥儿 2010-09-21
  • 打赏
  • 举报
回复
呵呵,谢谢了,今天遇到这个问题
wuzoujing 2007-05-31
  • 打赏
  • 举报
回复
#pragma once
同样的错误只警告一次,
其他的#pragma,可以上网去搜索,满多的资料!
tliu82 2007-05-31
  • 打赏
  • 举报
回复
谢谢,正解,不过能解释下这个预处理什么意思么
我还经常看到
#pragma once
之类的#pragma
这个#pragma
是什么意思啊。。。后面可以放什么参数选项啊
zottff 2007-05-31
  • 打赏
  • 举报
回复
在include语句下面添加下面一行:

#pragma comment(lib, "ws2_32.lib")

sprintf的第一个参数是接收输出的字符串缓冲区,第2个参数及之后同printf
例如:
char s[10];

sprintf(s, "%d", 123);
此时s中存放字符“123”
tliu82 2007-05-31
  • 打赏
  • 举报
回复
还有请问sprintf()函数的三个参数是什么意思啊?谢谢
tliu82 2007-05-31
  • 打赏
  • 举报
回复
那怎么样调整呢?
这就是一个winsick服务器端的例子
ouyh12345 2007-05-31
  • 打赏
  • 举报
回复
LNK2019经常是调用约定设置得不同造成的。
ouyh12345 2007-05-31
  • 打赏
  • 举报
回复
accept返回的是客户端的socket,以后服务端向客户端发送数据就使用这个socket
tliu82 2007-05-31
  • 打赏
  • 举报
回复
错误代码为:加了extern "C"或是不假都不行

------ Build started: Project: tcpSrv, Configuration: Debug Win32 ------

Compiling...
main.cpp
c:\Documents and Settings\liutong\My Documents\Visual Studio Projects\tcpSrv\main.cpp(77) : warning C4267: 'argument' : conversion from 'size_t' to 'int', possible loss of data
Linking...
main.obj : error LNK2019: unresolved external symbol __imp__closesocket@4 referenced in function _main
main.obj : error LNK2019: unresolved external symbol __imp__recv@16 referenced in function _main
main.obj : error LNK2019: unresolved external symbol __imp__send@16 referenced in function _main
main.obj : error LNK2019: unresolved external symbol __imp__inet_ntoa@4 referenced in function _main
main.obj : error LNK2019: unresolved external symbol __imp__accept@12 referenced in function _main
main.obj : error LNK2019: unresolved external symbol __imp__listen@8 referenced in function _main
main.obj : error LNK2019: unresolved external symbol __imp__bind@12 referenced in function _main
main.obj : error LNK2019: unresolved external symbol __imp__htons@4 referenced in function _main
main.obj : error LNK2019: unresolved external symbol __imp__htonl@4 referenced in function _main
main.obj : error LNK2019: unresolved external symbol __imp__socket@12 referenced in function _main
main.obj : error LNK2019: unresolved external symbol __imp__WSACleanup@0 referenced in function _main
main.obj : error LNK2019: unresolved external symbol __imp__WSAStartup@8 referenced in function _main
Debug/tcpSrv.exe : fatal error LNK1120: 12 unresolved externals

Build log was saved at "file://c:\Documents and Settings\liutong\My Documents\Visual Studio Projects\tcpSrv\Debug\BuildLog.htm"
tcpSrv - 13 error(s), 1 warning(s)


---------------------- Done ----------------------

Build: 0 succeeded, 1 failed, 0 skipped


tliu82 2007-05-31
  • 打赏
  • 举报
回复
谢谢诸位了
zottff 2007-05-31
  • 打赏
  • 举报
回复
#pragma comment(lib, "ws2_32.lib"):连接的时候包含ws2_32.lib

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

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