当前位置:  技术问答>linux和unix

Socket编程connection refused问题

    来源: 互联网  发布时间:2017-02-03

    本文导语:  学习socket,自己试着编了一个C/S程序 代码如下: /*  *  * client  *  * */ #include #include #include #include #include #include #include #include #define SERVPORT 1234 #define MAXDATASIZE 100 int main(int argc, char *argv[]) {     int sockfd, send...

学习socket,自己试着编了一个C/S程序
代码如下:

/*
 *
 * client
 *
 * */
#include
#include
#include
#include
#include
#include
#include
#include
#define SERVPORT 1234
#define MAXDATASIZE 100
int main(int argc, char *argv[]) {
    int sockfd, sendBytes;
    char buf[MAXDATASIZE];
    struct hostent *host;
    struct sockaddr_in servAddr;
    if(argc != 2) {
        fprintf(stderr,"usage:./client [hostname]");
        exit(1);
    }
    /*translate the address*/
    if((host = gethostbyname(argv[1])) == NULL) {
        perror("fail to get host by name");
        exit(1);
    }
    printf("Success to get host by name...n");
    /*establish a socket*/
    if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
        perror("fail to establish a socket");
        exit(1);
    }
    printf("Success to establish a socket...n");
   
    /*init sockaddr_in*/
    servAddr.sin_family = AF_INET;
    servAddr.sin_port = SERVPORT;
    servAddr.sin_addr = *((struct in_addr *)host -> h_addr);
    bzero(&(servAddr.sin_zero), 8);
    /*connect the socket*/
    if(connect(sockfd, (struct sockaddr *)&servAddr, sizeof(struct sockaddr)) == -1) {
        perror("fail to connect the socket");
        exit(1);
    }
    printf("Success to connect the socket...b");
    /*send datas to server*/
    if(sendBytes = send(sockfd, "hello", 5, 0) == -1) {
        perror("fail to send datas");
        exit(1);
    }
    printf("Success to send data!");
    close(sockfd);
}



    /*
     *
     * server
     *
     * */
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #include
    #define SERVPORT 1234
    #define BACKLOG 20
    #define MAX_CON_NO 10
    #define MAX_DATA_SIZE 5
    int main() {
        struct sockaddr_in serverSockaddr, clientSockaddr;
        int sinSize, recvBytes;
        int sockfd, clientfd;
        char buf[MAX_DATA_SIZE];
        /*establish a socket*/
        if((sockfd = socket(AF_INET, SOCK_STREAM, 0)) == -1) {
            perror("fail to establish a socket");
            exit(1);
        }
        printf("Success to establish a socket...(sockfd = %d)n", sockfd);
        /*init sockaddr_in*/
        serverSockaddr.sin_family = AF_INET;
        serverSockaddr.sin_port = htons(SERVPORT);
        serverSockaddr.sin_addr.s_addr = INADDR_ANY;
        bzero(&(serverSockaddr.sin_zero), 8);
        /*bind socket*/
        if(bind(sockfd, (struct sockaddr *)&serverSockaddr, sizeof(struct sockaddr))== -1) {
            perror("fail to bind");
            exit(1);
        }
        printf("Success to bind the socket...n");
        /*listen on the socket*/
        if(listen(sockfd, BACKLOG) == -1) {
            perror("fail to listen");
            exit(1);
        }
        printf("Success to listen on the socket...n");
        /*accept a client's request*/
        if((clientfd = accept(sockfd, (struct sockaddr *)&clientSockaddr, &sinSize)) == -1) {
            perror("fail to acceot");
            exit(1);
        }
        printf("Success to accpet...n");
        /*call recv to receive datas*/
        if((recvBytes = recv(sockfd, buf, MAX_DATA_SIZE, 0)) == -1) {
                perror("fail to receive datas");
                exit(1);
        }
        printf("Receive a connection:%s n", buf);
        close(sockfd);
    }


在UBUNTU防火墙关闭情况下终端1执行

    jimmy@MyPet:~$ gcc -o server server.c
    jimmy@MyPet:~$ gcc -o client client.c
    jimmy@MyPet:~$ ./server
    Success to establish a socket...(sockfd = 3)
    Success to bind the socket...
    Success to listen on the socket...


终端2执行
    jimmy@MyPet:~$ ./client MyPet
    Success to get host by name...
    Success to establish a socket...
    fail to connect the socket: Connection refused
    jimmy@MyPet:~$ ./client 127.0.0.1
    Success to get host by name...
    Success to establish a socket...
    fail to connect the socket: Connection refused
    jimmy@MyPet:~$ ./client 127.0.1.1
    Success to get host by name...
    Success to establish a socket...
    fail to connect the socket: Connection refused
    jimmy@MyPet:~$ 


查看端口

    jimmy@MyPet:~$ nmap MyPet
    Starting Nmap 5.21 ( http://nmap.org ) at 2012-02-19 14:35 CST
    Nmap scan report for MyPet (127.0.1.1)
    Host is up (0.00043s latency).
    Not shown: 998 closed ports
    PORT     STATE SERVICE
    21/tcp   open  ftp
    1234/tcp open  hotline
    Nmap done: 1 IP address (1 host up) scanned in 0.19 seconds


请问众位大神这client端运行时的connection refused是怎么回事呢?服务器的问题吗?
但是根据端口情况应该是在进行监听的。

谢谢!

|
客户端的PORT没做htons

|
  if(connect(sockfd, (struct sockaddr *)&servAddr, sizeof(struct sockaddr)) == -1) {

第三个参数用sizoef(struct sockaddr_in)

    
 
 

您可能感兴趣的文章:

  • java命名空间java.net类socket的类成员方法: connect定义及介绍
  • .net/c#/asp.net iis7站长之家
  • socket编程,设为非阻塞,客户端怎么判断connect已经成功呢?
  • 关于Socket中connect连接host的超时问题,急!!!
  • 怎样使socket对客户端的connect直接拒绝?
  • 关于socket Connection time out的问题(ARM)
  • 能ping通socket connect不上
  • socket错误提示: Transport endpoint is not connected
  • [紧急求助]socket在read时提示Connection reset by peer错误
  • socket客户端connect服务端后,如何断开连接?
  • socket编程connect的问题
  • socket连接函数connect()返回错误 errno 为 115,什么原因?谢谢
  • 我做的 客戶耑程序執行暸socket,connect,缺在write() 時齣錯,error:broken pipe
  • 关于网络编程中SOCKET CONNECTION释放的问题 -100 cents
  • socket编程,服务器会用bind()绑定端口,而客户端不用绑定端口就可以调用connect()。那么客户端的端口时系统自己分配的么?是何时绑定的?
  • Connection reset by peer: JVM_recv in socket input stream read这个问题到底怎么解决??
  • 2002-10-08 03:14:33 - Ctx( ): IOException in: R( + /EditAccount/SearchAccount.jsp + null) Connection aborted by peer: socket w
  • socket 編程 connect錯誤
  • 求助socket编程问题:C/S模式.客户端调用Winsock函数connect()的时候,返回错误码是10065(主机路由不可达).
  • socket的connect老是出错!高手帮忙找一下原因
  • socket 客户端connect后返回错误:no route to host.急!!
  • 新手求解Linux Fedora socket连接是提示Connection refused??
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • andriod下java socket网络编程:java socket客户端服务端代码示例
  • re socket编程中 ACCEPT返回的socket与原socket(他参数中的)端口号一样吗?
  • IOS开发之socket网络编程(基于SimpleNetworkStreams的c/s程序)
  • 大家帮忙推荐一本linux socket编程的入门书,我刚接触socket,谢谢!!
  • Linux c socket编程:简单的客户端(client)和服务端(server)实现
  • socket 编程时,write的写入的数据大于socket缓冲区,会有什么结果??
  • Linux下使用openssl api编程socket编程,为什么要编译啊?
  • 关于文件操作和Socket网络编程!
  • linux下socket编程问题!
  • socket编程 中的bind问题
  • socket编程--htons
  • 急!!请教关于linux socket编程的一个问题!!
  • 急!关于SOCKET编程,在线等待!
  • socket编程 通过man socket, 没有找到socket函数的第一参数该填什么 怎样利用man手册
  • 多进程socket编程问题
  • 问一个socket编程问题,急~~~
  • 求教!为何在socket编程中调recv函数无法阻塞?
  • 请教一个socket编程问题
  • 求助!!linux下socket编程
  • socket编程,使用recvfrom()函数监听问题。
  • sco unix下socket编程的问题,请大家帮忙
  • java命名空间java.net类socket的类成员方法: socket定义及介绍
  • libevent2需要从socket读一段数据写入一个socket中,同时发送给另一个socket
  • java命名空间java.nio.channels类socketchannel的类成员方法: socket定义及介绍
  • vc做的的socket应用和unix下socket?
  • java命名空间java.nio.channels类serversocketchannel的类成员方法: socket定义及介绍
  • QSocketDevice ( int socket, Type type )中那个 int socket 是哪里来得?
  • java命名空间java.nio.channels类datagramchannel的类成员方法: socket定义及介绍
  • 线程间可否通过管道传递SOCKET句柄?还有其他方式传递SOCKET么?
  • java命名空间java.net类socket的类成员方法: getsendbuffersize定义及介绍
  • [FreeBSD] 大神,求解,control socket : can‘t to any socket


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3