C++关于套接字的错误
各位大哥帮小弟看看为什么会出这种错误D:\新建文件夹\fwd\fwd.cpp(40):errorC2065:'soketCln':undeclaredidentifier...
各位大哥帮小弟看看为什么会出这种错误
D:\新建文件夹\fwd\fwd.cpp(40) : error C2065: 'soketCln' : undeclared identifier
D:\新建文件夹\fwd\fwd.cpp(40) : error C2039: 'SCOKET' : is not a member of '`global namespace''
D:\新建文件夹\fwd\fwd.cpp(40) : error C2065: 'SCOKET' : undeclared identifier
D:\新建文件夹\fwd\fwd.cpp(27) : error C2039: 'SCOKADDR_IN' : is not a member of '`global namespace''
D:\新建文件夹\fwd\fwd.cpp(27) : error C2065: 'SCOKADDR_IN' : undeclared identifier
D:\新建文件夹\fwd\fwd.cpp(27) : error C2146: syntax error : missing ';' before identifier 'addrSvr'
D:\新建文件夹\fwd\fwd.cpp(27) : error C2065: 'addrSvr' : undeclared identifier
D:\新建文件夹\fwd\fwd.cpp(28) : error C2228: left of '.sin_addr' must have class/struct/union type
D:\新建文件夹\fwd\fwd.cpp(28) : error C2228: left of '.Sun' must have class/struct/union type
D:\新建文件夹\fwd\fwd.cpp(28) : error C2228: left of '.S_addr' must have class/struct/union type
D:\新建文件夹\fwd\fwd.cpp(29) : error C2146: syntax error : missing ';' before identifier 'assrSvr'
编译环境是创天中文VC++6.0
设置里面的动态链接库也连了,
为什么提示没有SCOKADDR_IN,SOCKET。类型怎么解决呀~是不是系统问题?我是在虚拟机里弄得,XP系统
以下是代码
#include <Winsock2.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );//初始化
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
SOCKET soketSvr=::socket(AF_INET,SOCK_STREAM,0);//服务器套接字
SCOKADDR_IN addrSvr;
addrSvr.sin_addr.Sun.S_addr=htonl(INADDR_ANY)
assrSvr.sin_family=AF_INET;
addrSvr.sin_port=htons(6000);
bind(soketSvr,(SOCKADDR *)&addrSvr,sizeof(SOCKADDR));//绑定套接字
listen(soketSvr,5);
SCOKADDR_IN addrClient;//客户端地址族
int len=sizeof(SCOKADDR);
while(1)
{
SCOKET soketCln=accept(soketSvr,(SOCKADDR *)&addrClient,len);//接受信息套接字
char sendbuff[100];
sprintf(sendbuff,"%s你好",inet_ntoa(addrClient.sin_addr));
send(soketCln,sendbuff,strlen(sendbuff)+1,0);
char recfBuf[100];
recv(soketCln,recfBuf,100,0);
printf("%s",recfBuf);
closesocket(soketCln);//关闭套接字
}
}
万分感激~~~~小弟初学...哪要是问的弱了请息怒。。 展开
D:\新建文件夹\fwd\fwd.cpp(40) : error C2065: 'soketCln' : undeclared identifier
D:\新建文件夹\fwd\fwd.cpp(40) : error C2039: 'SCOKET' : is not a member of '`global namespace''
D:\新建文件夹\fwd\fwd.cpp(40) : error C2065: 'SCOKET' : undeclared identifier
D:\新建文件夹\fwd\fwd.cpp(27) : error C2039: 'SCOKADDR_IN' : is not a member of '`global namespace''
D:\新建文件夹\fwd\fwd.cpp(27) : error C2065: 'SCOKADDR_IN' : undeclared identifier
D:\新建文件夹\fwd\fwd.cpp(27) : error C2146: syntax error : missing ';' before identifier 'addrSvr'
D:\新建文件夹\fwd\fwd.cpp(27) : error C2065: 'addrSvr' : undeclared identifier
D:\新建文件夹\fwd\fwd.cpp(28) : error C2228: left of '.sin_addr' must have class/struct/union type
D:\新建文件夹\fwd\fwd.cpp(28) : error C2228: left of '.Sun' must have class/struct/union type
D:\新建文件夹\fwd\fwd.cpp(28) : error C2228: left of '.S_addr' must have class/struct/union type
D:\新建文件夹\fwd\fwd.cpp(29) : error C2146: syntax error : missing ';' before identifier 'assrSvr'
编译环境是创天中文VC++6.0
设置里面的动态链接库也连了,
为什么提示没有SCOKADDR_IN,SOCKET。类型怎么解决呀~是不是系统问题?我是在虚拟机里弄得,XP系统
以下是代码
#include <Winsock2.h>
#include <stdio.h>
#include <windows.h>
#pragma comment(lib,"ws2_32.lib")
void main()
{
WORD wVersionRequested;
WSADATA wsaData;
int err;
wVersionRequested = MAKEWORD( 1, 1 );
err = WSAStartup( wVersionRequested, &wsaData );//初始化
if ( err != 0 ) {
return;
}
if ( LOBYTE( wsaData.wVersion ) != 1 ||
HIBYTE( wsaData.wVersion ) != 1 ) {
WSACleanup( );
return;
}
SOCKET soketSvr=::socket(AF_INET,SOCK_STREAM,0);//服务器套接字
SCOKADDR_IN addrSvr;
addrSvr.sin_addr.Sun.S_addr=htonl(INADDR_ANY)
assrSvr.sin_family=AF_INET;
addrSvr.sin_port=htons(6000);
bind(soketSvr,(SOCKADDR *)&addrSvr,sizeof(SOCKADDR));//绑定套接字
listen(soketSvr,5);
SCOKADDR_IN addrClient;//客户端地址族
int len=sizeof(SCOKADDR);
while(1)
{
SCOKET soketCln=accept(soketSvr,(SOCKADDR *)&addrClient,len);//接受信息套接字
char sendbuff[100];
sprintf(sendbuff,"%s你好",inet_ntoa(addrClient.sin_addr));
send(soketCln,sendbuff,strlen(sendbuff)+1,0);
char recfBuf[100];
recv(soketCln,recfBuf,100,0);
printf("%s",recfBuf);
closesocket(soketCln);//关闭套接字
}
}
万分感激~~~~小弟初学...哪要是问的弱了请息怒。。 展开
展开全部
除了包含头文件还要加入socket库。
加上这一句就行了!
#pragma comment(lib,"WS2_32.lib");
加上这一句就行了!
#pragma comment(lib,"WS2_32.lib");
追问
不区分大小写吧,我好像写了。
参考资料: 百度一下
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
严重同意2楼
注意看错误信息!
注意看错误信息!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询