// winsockets.cpp : 定义控制台应用程序的入口点。
///*
  using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{    cout<<"fjalsd";
system("pause");
return 0;
}  */ /***********************************************************************************************
调试环境:vc7.0
服务器ip地址: 由系统指定
服务器端口号: 5050
程序名称: winsockets.cpp
程序功能:服务器端的程序当有客户提出连接请求时,在端口5050与客户端进行tcp连接,连接成功后,显示客
户ip地址与端口号,并给客户发送消息,如果发送正确则显示发送的字节数
命今格式:winsockets
************************************************************************************************/
#include <Winsock2.h>
#include "stdafx.h"
#include <stdio.h>
#include <stdlib.h>
//服务器使用默认的端口号5050
#define DEFAULT_PORT 5050
int main(){ int       iport=DEFAULT_PORT;
WSADATA   wsaData;
SOCKET    sListen;
//客户地址长度
    int      iLen;
//发送数据长度;
int      iSend;
//服务器与管户的地址;
struct sockaddr_in   ser,   cli;
printf("--------------------------------------------------");
printf("Server waiting \n");
printf("--------------------------------------------------");
 
if(WSAStartup(MAKEWORD(2,2),&wsaData)!=0){
printf("Faild to load winsock.\n");
return -1;
}
//创建服务器端socktet口
  sLiten=socket(AF_INET,SOCK_STREAM,0);
  if(sLiten=INVALID_SOCKET){
  printf("socket() Falid:%d\n",WSAGetLastError());
  return  -1;
}
  //建立服务器端地址
 ser.sin_family=AF_INET;
 //htons()把一个双字节主机字节顺序的数转换为网络字节顺序
 ser.sin_port=htons(iPort);
 //htonl()把一个四字节主机地址转化为网络字节顺序;
 ser.sin_addr.s_addr=htonl(INADDR_ANY);   
 //使用系统指定的ip地址
 if(bind(sListen,(LPSOCKADDR)&ser,sizeof(ser),)==SOCKET_ERROR){
 printf("bind() Faild:%d\n",WSAGetError());
 return -1;
 }
 //进入监听壮态
 if(listen(sListen,5)==SOCKET_ERROR){
   printf("bind() Faild:%d\n",WSAGetError());
   return -1 ;}
 //取客户端的地址长度
 iLen=sizeof(cli);
 //进入一个无限循环
 while(1){
 sAccept=accept(sListen,(struct sockaddr*)&cli,&iLen);
 if(sAccept==INVALD_SOCKET){
 printf("xx() Faild:%d\n",WSAGetError());
 break ;
 }
  //输出客户端ip地址与 端口号
 printf("Accept client IP:[%s],port:[%d]\n",inet_ntoa(cli.sin_addr),ntoha(cli.sin_port));
 //给连接的客户发送信息
 iSend=send(sAccept,buf,sizeof(buf),0);
 if(iSend==SOCKET_ERROR){
  printf("xx() Faild:%d\n",WSAGetError());
 break ;
 }
 else if(iSend==0){
 break;
 }
 else 
 {
 printf("send() byte:%d",iSend);  printf("--------------------------------------------------\n");
 }
 closesocket(sAccept);
 }
 closesocket(iListen);
 WSACleanup():
 }大家看看这代码有没有问题
是不是我的.net2003配置不行?
抄书也会这样多错误

解决方案 »

  1.   

    什么错误?先把#include "stdafx.h"放到前面(第一个包含)看看。
      

  2.   

    放到前面#include "stdafx.h"也不行
    出错:
    /////////////////////////////////
    ------ 已启动生成: 项目: winsockets, 配置: Debug Win32 ------正在编译...
    winsockets.cpp
    e:\testvc\winsockets\winsockets\winsockets.cpp(49) : error C2065: “sLiten” : 未声明的标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(50) : error C3861: “sLiten”: 即使使用参数相关的查找,也未找到标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(57) : error C2065: “iPort” : 未声明的标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(61) : error C2059: 语法错误 : “)”
    e:\testvc\winsockets\winsockets\winsockets.cpp(61) : error C2143: 语法错误 : 缺少“;”(在“{”的前面)
    e:\testvc\winsockets\winsockets\winsockets.cpp(62) : error C3861: “WSAGetError”: 即使使用参数相关的查找,也未找到标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(67) : error C3861: “WSAGetError”: 即使使用参数相关的查找,也未找到标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(73) : error C2065: “sAccept” : 未声明的标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(74) : error C2065: “INVALD_SOCKET” : 未声明的标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(74) : error C3861: “sAccept”: 即使使用参数相关的查找,也未找到标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(75) : error C3861: “WSAGetError”: 即使使用参数相关的查找,也未找到标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(79) : error C3861: “ntoha”: 即使使用参数相关的查找,也未找到标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(81) : error C2065: “buf” : 未声明的标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(81) : error C2070: “'unknown-type'”: 非法的 sizeof 操作数
    e:\testvc\winsockets\winsockets\winsockets.cpp(81) : error C3861: “sAccept”: 即使使用参数相关的查找,也未找到标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(81) : error C3861: “buf”: 即使使用参数相关的查找,也未找到标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(83) : error C3861: “WSAGetError”: 即使使用参数相关的查找,也未找到标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(95) : error C3861: “sAccept”: 即使使用参数相关的查找,也未找到标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(97) : error C2065: “iListen” : 未声明的标识符
    e:\testvc\winsockets\winsockets\winsockets.cpp(98) : error C2143: 语法错误 : 缺少“;”(在“:”的前面)
    e:\testvc\winsockets\winsockets\winsockets.cpp(98) : error C2143: 语法错误 : 缺少“;”(在“:”的前面)生成日志保存在“file://e:\testvc\winsockets\winsockets\Debug\BuildLog.htm”中
    winsockets - 21 错误,0 警告
    ---------------------- 完成 ---------------------    生成: 0 已成功, 1 已失败, 0 已跳过
      

  3.   

    #include <winsock2.h>
    #pragma comment(lib, "ws2_32.lib")倒数第二行WSACleanup():中,:改为;