Chinaunix

标题: socket错误! [打印本页]

作者: 楚狂徒    时间: 2005-02-22 11:05
标题: socket错误!
winxp(vc编译)报错:

--------------------Configuration: socketserver - Win32 Debug--------------------
Linking...
LIBCD.lib(crt0.obj) : error LNK2001: unresolved external symbol _main
Debug/socketserver.exe : fatal error LNK1120: 1 unresolved externals
Error executing link.exe.

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


代码如下:

#ifndef _SOCKET_SERVER_H
#define _SOCKET_SERVER_H

#ifndef _WIN32
#include <sys/socket.h>;
#include <unistd.h>;
#include <netinet/in.h>;
#else
#include <winsock.h>;
#endif

#include <stdio.h>;
#include <string.h>;
#include <errno.h>;


#define PORT 8888

int main(int argc, char *argv[])
{
    int sockfd,new_fd;
    struct sockaddr_in server_addr;
    struct sockaddr_in client_addr;
    int sin_size,portnumber;
    char hello[]="Hello! Are You Fine?\n";

    portnumber = PORT ;

    /* 服务器端开始建立socket描述符 */
    if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)
    {
    fprintf(stderr,"Socket error:%s\n\a",strerror(errno));
    exit(1);
    }

    fprintf(stderr,"Create Socket\n\a";

    /* 服务器端填充 sockaddr结构 */
    bzero(&server_addr,sizeof(struct sockaddr_in));
    server_addr.sin_family=AF_INET;
    server_addr.sin_addr.s_addr=htonl(INADDR_ANY);
    server_addr.sin_port=htons(portnumber);

    /* 捆绑sockfd描述符 */
    if(bind(sockfd,(struct sockaddr *)(&server_addr),sizeof(struct sockaddr))==-1)
    {
        fprintf(stderr,"Bind error:%s\n\a",strerror(errno));
        exit(1);
    }
   
    fprintf(stderr,"Start Listen...\n\a";

    /* 监听sockfd描述符 */
    if(listen(sockfd,5)==-1)
    {
        fprintf(stderr,"Listen error:%s\n\a",strerror(errno));
        exit(1);
    }

    while(1)
    {
        /* 服务器阻塞,直到客户程序建立连接 */
        sin_size=sizeof(struct sockaddr_in);
        if((new_fd=accept(sockfd,(struct sockaddr *)(&client_addr),&sin_size))==-1)
        {
            fprintf(stderr,"Accept error:%s\n\a",strerror(errno));
            exit(1);
        }
        //fprintf(stderr,"accept\n\a";

        fprintf(stderr,"Server get connection from %s\n",inet_ntoa(client_addr.sin_addr));
        if(write(new_fd,hello,strlen(hello))==-1)
        {
            fprintf(stderr,"Write Error:%s\n",strerror(errno));
            exit(1);
        }
        //fprintf(stderr,"write\n\a";

        /* 这个通讯已经结束 */
        close(new_fd);
        /* 循环下一个 */
    }
    close(sockfd);
    exit(0);
}
#endif//_SOCKET_SERVER_H
作者: flw    时间: 2005-02-22 12:56
标题: socket错误!
把你的文件的开始两行和最后一行去掉




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2