游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1483|回复: 1

2003测试通过 VC6.0链接出错 纳闷死了 谁有类似经验?

[复制链接]

3

主题

22

帖子

22

积分

注册会员

Rank: 2

积分
22
发表于 2007-8-7 04:47:00 | 显示全部楼层 |阅读模式
#include "Stdio.h"
#include "winsock.h"
#include "stdlib.h"

void usage(char *name)
{
        fprintf(stderr,"usgae:%s [port]\n",name);
}

int main(int argc, char *argv[])
{
        SOCKET servsock,clisock;
        struct sockaddr_in  sa;
        struct sockaddr_in cliaddr; //存放返回客户地址信息
        int len;
        int err;
        int servport = 5555; //默认服务端口
        char buff[256]; //存放时间/日期信息缓冲区
        SYSTEMTIME st;
        WSADATA wsd;

        //处理命令行参数
        if(argc > 2)
        {
                usage(argv[0]);
                return -1;
        }

        if(argc == 2)
        {
                servport = atoi(argv[1]);
                if(servport > 65535 || servport < 1)
                {
                        usage(argv[0]);
                        return -2;
                }
        }

        //初始化 WINSOCK2.2
        if(WSAStartup(MAKEWORD(2,2),&wsd)!=0)
        {
                printf("WSAStartup() failed !\n");
                return -3;
        }

        //创建套接字
        printf("create Socket ...\n");
        servsock = socket(AF_INET,SOCK_STREAM,0);
        if(servsock == INVALID_SOCKET)
        {
                fprintf(stderr,"Socket() failed:%d\n",WSAGetLastError());
                return -4;
        }

        printf("[OK]\n");

        //填充服务器地址结构
        memset(&sa,0,sizeof(sa));
        sa.sin_family   = AF_INET;
        sa.sin_port     = htons(servport);
        sa.sin_addr.S_un.S_addr = htonl(INADDR_ANY);

        //绑定套接字到服务器地址结构
        printf("bind ...\n");
        err = bind(servsock,(const sockaddr *)&sa,sizeof(sa));
        if(err != 0)
        {
                fprintf(stderr,"bind() failed: %d\n",WSAGetLastError());
                return -5;
        }
        printf("[OK]\n");

        //监听套接字
        printf("listen ...\n");
        err = listen(servsock,5);
        if(err != 0)
        {
                fprintf(stderr,"listen() failed: &d\n",WSAGetLastError());
                return -6;
        }

        //循环接受连接请求
        while(1)
        {
                printf("wait request ...\n");
                len = sizeof(cliaddr);
                clisock = accept(servsock,(struct sockaddr *)&cliaddr,&len);
                if(clisock == INVALID_SOCKET)
                {
                        fprintf(stderr,"accept() failed; %d\n",WSAGetLastError());
                        closesocket(servsock);
                        return -7;
                }
               
                printf("accept client: %s:%d\n",inet_ntoa(cliaddr.sin_addr),ntohs(cliaddr.sin_port));
                GetLocalTime(&st); //得到本地时间 日期
                //返回给客户整理时间/日期信息格式
                sprintf(buff,"YEAR : %u \nMONTH: %u \nDAY: %u \n HOUR: %u \n MINUTE: %u \nSECOND: %u \n",st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);
                send(clisock,buff,strlen(buff),0); //发送给客户
                closesocket(clisock); //关闭与客户端连接
                printf("[server OK]\n");
        }

        closesocket(servsock);//关闭服务套接字
        WSACleanup();//释放资源
        return 0;
}

在link中 加入 wsock32.lib
编译 ...
VC6.0
--------------------Configuration: server - Win32 Debug--------------------
Linking...
LIBCD.lib(wincrt0.obj) : error LNK2001: unresolved external symbol _WinMain@16
Debug/server.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

server.exe - 2 error(s), 0 warning(s)

使用2003则通过 顺利编译

谁能知道配置那里出错么... 纳闷死了 这个实例本来就是6.0的... [em7] [em7]

3

主题

22

帖子

22

积分

注册会员

Rank: 2

积分
22
 楼主| 发表于 2007-8-7 05:01:00 | 显示全部楼层

Re:2003测试通过 VC6.0链接出错 纳闷死了 谁有类似经验?

晕晕.... 解决了  看错了 6.0 建立错了工程   ....  不好意思 ... - -!....
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-25 13:03

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表