C 套接字错误:连接被拒绝-我做错了什么?

C 套接字错误:连接被拒绝-我做错了什么?,c,linux,sockets,C,Linux,Sockets,我刚刚开始学习套接字(Linux)的基础知识。我尝试了一个小例子,但它不起作用,我也不知道出了什么问题 我收到一条“连接被拒绝”错误消息 这是我的密码: #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> #include <netinet/ip.h> #include <stdio.h> #include <string.h> #i

我刚刚开始学习套接字(Linux)的基础知识。我尝试了一个小例子,但它不起作用,我也不知道出了什么问题

我收到一条“连接被拒绝”错误消息


这是我的密码:

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <netinet/ip.h>
#include <stdio.h>
#include <string.h>
#include <errno.h>

int main() {
    int c;
    c = socket(AF_INET, SOCK_STREAM, 0);
    if (c < 0) {
        printf("Error in creating socket! %s\n", strerror(errno));
        return 1;
    }

    struct sockaddr_in server;
    memset(&server, 0, sizeof(server));
    server.sin_port = htons(1234);
    server.sin_family = AF_INET;
    server.sin_addr.s_addr = inet_addr("127.0.0.1"); //local host
    if (connect(c, (struct sockaddr *)&server, sizeof(server)) < 0) {
        // Here is my error
        printf("Error when connecting! %s\n",strerror(errno)); 
        return 1;
    }

    while(1) {
        char msg[100];
        printf("Give message: ");
        fgets(msg, sizeof(msg), stdin); 
        send(c, &msg, sizeof(msg), 0);
        char resp[100];
        recv(c, &resp, sizeof(resp), 0);
        printf("Received: %s\n", resp);
    }
close(c);
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
int main(){
INTC;
c=套接字(AF_INET,SOCK_STREAM,0);
if(c<0){
printf(“创建套接字时出错!%s\n”,strerror(errno));
返回1;
}
服务器中的结构sockaddr_;
memset(&server,0,sizeof(server));
server.sin_port=htons(1234);
server.sinu family=AF\u INET;
server.sin_addr.s_addr=inet_addr(“127.0.0.1”);//本地主机
if(connect(c,(struct sockaddr*)&服务器,sizeof(服务器))<0){
//这是我的错误
printf(“连接时出错!%s\n”,strerror(errno));
返回1;
}
而(1){
char-msg[100];
printf(“给出消息:”);
fgets(味精、味精、标准DIN);
发送(c,&msg,sizeof(msg),0);
charresp[100];
recv(c和resp),sizeof(resp),0;
printf(“收到:%s\n”,resp);
}
关闭(c);
}
编辑

当然!错误实际上在服务器中。我只是觉得客户端发送消息很奇怪,所以我缩小了视野,甚至懒得回头看服务器

由于错误似乎也在我的服务器中,我可能会问另一个问题并将其链接到此处


服务器正在侦听(12345).

根据以下信息,本地主机中可能没有服务器侦听端口1234

econnrefered 没有人监听远程地址


为了提供一个简单的远程端点来接受您的连接并发送回接收到的数据(echo服务器),您可以尝试以下方法(或使用):


你的答案是:你的程序是客户端,它需要一个服务器来连接<代码>nc命令创建服务器,您的程序可以连接到该服务器

[root@mg0008 work]# nc -l 127.0.0.1 1234 &
[1] 25380
[root@mg0008 work]# ./socket
Give message: Hello
Hello

您是否编写了在端口1234上侦听的程序?在创建侦听器之前,请尝试执行nc-l 127.0.0.1 1234。我如何解决这个问题?我理解其中的一些内容,在运行客户端之前,您需要编写一个程序,即“服务器”侦听端口1234,并在本地框中运行它。
[root@mg0008 work]# nc -l 127.0.0.1 1234 &
[1] 25380
[root@mg0008 work]# ./socket
Give message: Hello
Hello