读书人

linux上socket编程调试connect出错有关

发布时间: 2012-09-03 09:48:39 作者: rapoo

linux下socket编程调试connect出错问题
服务器代码socket1.c

C/C++ code
#include <stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/socket.h>#include <sys/wait.h>#define SERVPORT 2300 /*服务器监听端口号 */#define BACKLOG 10 /*最大同时连接请求数 */main(){    int sockfd,client_fd;    struct sockaddr_in my_addr;    struct sockaddr_in remote_addr;    if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1){    perror("socket创建出错!");    exit(1);    }    my_addr.sin_family=AF_INET;    my_addr.sin_port=htons(SERVPORT);    my_addr.sin_addr.s_addr=INADDR_ANY;    bzero(&(my_addr.sin_zero),8);    if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1){        perror("bind出错!");        exit(1);    }    if(listen(sockfd,BACKLOG)==-1)    {        perror("listen出错!");        exit(1);    }    while(1){        int sin_size=sizeof(struct sockaddr_in);        if((client_fd=accept(sockfd,(struct sockaddr *)&remote_addr,&sin_size))==-1)        {            perror("accept出错!");            continue;        }    printf("received a connection from %s",inet_ntoa(remote_addr.sin_addr));    if(!fork()){    if(send(client_fd,"Hello,you are connect!",26,0)==-1)    perror("send出错!");    close(client_fd);    exit(0);    }    close(client_fd);    }}

客户端代码socket3.c
C/C++ code
#include<stdio.h>#include <stdlib.h>#include <errno.h>#include <string.h>#include <netdb.h>#include <sys/types.h>#include <netinet/in.h>#include <sys/socket.h>#define SERVPORT 2300#define MAXDATASIZE 100 /*每次最大数据传输量 */main(int argc, char *argv[]){ int sockfd,recvbytes; char buf[MAXDATASIZE]; struct hostent *host; struct sockaddr_in serv_addr; if(argc<2){   fprintf(stderr,"Please enter the server's hostname!");   exit(1); } if((host=gethostbyname(argv[1]))==NULL){   perror("gethostbyname出错!");   exit(1); } if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1) {   perror("socket创建出错!");   exit(1); } serv_addr.sin_family=AF_INET; serv_addr.sin_port=htons(SERVPORT); serv_addr.sin_addr=*((struct in_addr*)host->h_addr); bzero(&(serv_addr.sin_zero),8); if(connect(sockfd,(struct sockaddr *)serv_addr,sizeof(struct sockaddr))==-1){   perror("connect出错!");   exit(1); } if((recvbytes=recv(sockfd,buf,MAXDATASIZE,0))==-1){ perror("recv出错!"); exit(1); } buf[recvbytes]='\0'; printf("Received:%s",buf); close(sockfd);}

在命令行./socket1 &
再./socket3 127.0.0.1
给出connect出错!:Connection refused

[解决办法]
把防火墙关了试试
[解决办法]
探讨

把防火墙关了试试

[解决办法]
探讨

把防火墙关了试试

读书人网 >C语言

热点推荐