| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1505 人关注过本帖
标题:[Error] ld returned 1 exit status
只看楼主 加入收藏
狮子头
Rank: 2
等 级:论坛游民
帖 子:17
专家分:10
注 册:2021-5-22
结帖率:66.67%
收藏
 问题点数:0 回复次数:2 
[Error] ld returned 1 exit status
程序代码:
#include <stdio.h>  
#include <winsock2.h>  
#pragma comment(lib,"ws2_32.lib")    //把ws2_32.lib加到Link页的连接库  
#define PORT 15001                    //通信的端口(指服务器端)
#define ERROR 0  
#define BUFFER_SIZE 1024            //注意:此Server端数据接收缓冲区 >= Client端数据发送缓冲区 ,否则造成缓冲区溢出
/*
    服务端原理:
        1、服务器进程创建套接字
        2、将本地地址绑定到所创建的套接字上,以三元组{<通信协议>,<IP地址>,<端口号>}在网络上标识该套接字
        3、将套接字置入监听模式,并准备接受连接请求
        4、接受请求之后,便可接收客户端发来的数据,并以本地DOS命令运行
*/
int main()  
{  
    WSADATA WSAData;  
    if(WSAStartup(MAKEWORD(2,0),&WSAData)==SOCKET_ERROR)  //启动winsock ,WSAStartup()函数对Winsock DLL进行初始化
    {  
        printf("Socket initialize fail!\n");  
        exit(1);  
    }  
    SOCKET sock;                                        //服务进程创建套接字句柄(用于监听)
    if((sock=socket(AF_INET,SOCK_STREAM,0))==ERROR)        //调用socket()函数创建一个流套接字,参数(网络地址类型,套接字类型,网络协议)
    { 
        printf("Socket create!\n");  
        WSACleanup();  
        exit(1);  
    }  
    struct sockaddr_in ServerAddr;            //sockaddr_in结构用来标识TCP/IP协议下的地址,可强制转换为sockaddr结构
    ServerAddr.sin_family=AF_INET;            //sin_family字段必须设为AF_INET,表示该Socket处于Internet域
    ServerAddr.sin_port=htons(PORT);        //sin_port字段用于指定服务端口,注意避免冲突
    ServerAddr.sin_addr.s_addr=INADDR_ANY;  //sin_addr字段用于把一个IP地址保存为一个4字节的数,无符号长整型,根据不同用法还可表示本地或远程IP地址
    if(bind(sock,(LPSOCKADDR)&ServerAddr,sizeof(ServerAddr))==SOCKET_ERROR)  //调用bind()函数将本地地址绑定到所创建的套接字上,以在网络上标识该套接字
    {   
        printf("Bind fail!\n");  
        closesocket(sock);  
        WSACleanup();  
        exit(1);  
    }  
    printf("Server Socket Port:%d\n",ntohs(ServerAddr.sin_port));  
    if(listen(sock,10)==SOCKET_ERROR)        //调用listen()函数将套接字置入监听模式并准备接受连接请求,参数(已捆绑未连接的套接字描述字,正在等待连接的最大队列长度)
    { 
        printf("Listen fail!\n");  
        closesocket(sock);  
        WSACleanup();  
        exit(1);  
    }  

    SOCKET msgsock;            //创建一个新的套接字(用于接收accept函数的返回值,即表示已经接受的那个客户端的连接,进而接收Client发来的数据)
    char buf[BUFFER_SIZE];  //数据接收缓冲区
    while(1)  
    {  
        if((msgsock=accept(sock,(LPSOCKADDR)0,(int *)0))==INVALID_SOCKET)  //进入监听状态后,调用accept()函数接收客户端的连接请求,并把连接传给msgsock套接字,原sock套接字继续监听其他客户机连接请求
        {  
            printf("Accept fail!\n");  
            continue;  
        }  
        memset(buf,0,sizeof(buf));                                            //初始化数据接收缓冲区
        recv(msgsock,buf,BUFFER_SIZE,0);                                    //接收客户端发送过来的数据  
        if(buf[0]=='e' && buf[1]=='x' && buf[2]=='i' && buf[3]=='t')        //"exit"命令,退出程序
        {  
            printf("The End.\n");  
            break;  
        }
        printf("C:\\Socket\\Server>%s",buf);  
        system(buf);                        //本地运行客户端传来的命令:这一点太厉害了,假如传一个Format命令,那服务端可能就毁了
        closesocket(msgsock);  
    }  

    closesocket(sock); //关闭套接字  
    WSACleanup();       //终止对Winsock DLL的使用,并释放资源
    return 0;
}

请问大佬,这串代码编译之后显示“[Error] ld returned 1 exit status”,应该怎么办啊?劳烦大佬了。
图片附件: 游客没有浏览图片的权限,请 登录注册

图片附上。
搜索更多相关主题的帖子: Socket sock exit 连接 套接字 
2021-07-02 18:46
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9029
专家分:54050
注 册:2011-1-18
收藏
得分:0 
Error] ld returned 1 exit status
你贴这句话有个屁用,你应该贴图中的“undefined reference to __imp_accept”等等。

查 https://docs.
得知需要 Ws2_32.lib
你的代码中有 #pragma comment(lib,"ws2_32.lib")
那么 mingw 会告诉你它不认识 #pragma comment(lib,"ws2_32.lib") 这句话,估计你看都懒得看,更别提贴出这个警告信息给大家知道了。

在 link 选项中手工加上 -lws2_32 这个链接参数试试
2021-07-02 19:19
不会游泳的虾
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:27
帖 子:108
专家分:675
注 册:2021-7-1
收藏
得分:0 
回复 楼主 狮子头

(1)一般出现这种问题都是你上一次“运行”的小黑窗还没关,然后你执行“编译”,由于该文件正在被使用,
     程序没法执行编译,所以就报了这样的错误。解决办法:打开任务管理器(ctrl+Alt+delete)关闭正在
     运行的程序。
(2)检查代码(变量和函数名有无重复,语法有无错误)大多情况都是自己代码出问题。
(3)编译器问题:设置编译。
2021-07-04 11:19
快速回复:[Error] ld returned 1 exit status
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.023584 second(s), 12 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved