套接字错误:连接被拒绝-我在做什么错? [英] Socket error: connection refused - what am I doing wrong?

查看:244
本文介绍了套接字错误:连接被拒绝-我在做什么错?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I've just started learning the basics of sockets (Linux). I tried my hand at a small example, but it doesn't work and I have no idea what's wrong.

我收到拒绝连接"错误消息.

I get a "Connection Refused" error message.

这是我的代码:

#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);
}

编辑

当然!该错误实际上是在服务器中.我只是发现客户端发送了消息很奇怪,所以我缩小了视野,甚至都没有回头看服务器.

Of course ! the error was actually in the server. I simply found it weired that the client sent the message, so I narrowed my view, didn't even bother looking back at the server.

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

服务器正在监听(12345)...

Server was listening to (12345) ...

推荐答案

根据手册页:

ECONNREFUSED 没有人在远程地址上侦听.

ECONNREFUSED No-one listening on the remote address.


为了提供一个简单的远程端点来接受您的连接并发送回接收到的数据(回显服务器),您可以尝试这样的操作 netcat ):


In order to provide a simple remote endpoint that accepts your connection and sends back the received data (echo server), you could try something like this python server (or to use netcat):

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(("localhost", 1234))
s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.sendall(data)
conn.close()

这篇关于套接字错误:连接被拒绝-我在做什么错?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆