linux上socket编程调试connect出错有关问题
linux下socket编程调试connect出错问题
服务器代码socket1.c
客户端代码socket3.c
在命令行./socket1 &
再./socket3 127.0.0.1
给出connect出错!:Connection refused
------解决方案--------------------
把防火墙关了试试
------解决方案--------------------
------解决方案--------------------
服务器代码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
------解决方案--------------------
把防火墙关了试试
------解决方案--------------------
------解决方案--------------------