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

前端之家收集整理的这篇文章主要介绍了套接字错误:连接被拒绝 – 我做错了什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我刚刚开始学习套接字( 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,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,0);
        char resp[100];
        recv(c,&resp,sizeof(resp),0);
        printf("Received: %s\n",resp);
    }
close(c);
}

编辑

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

由于错误似乎也在我的服务器上,我可能最终会问另一个问题并将其链接到这里

服务器正在听(12345)…

解决方法

根据 man page

ECONNREFUSED
No-one listening on the remote address.

为了提供一个简单的远程端点,可以接受您的连接并发回所接收的数据(回显服务器),您可以尝试这样的事情:python server(或使用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()

猜你在找的C&C++相关文章