请问socket创建失败的有关问题
请教socket创建失败的问题
小弟是菜鸟一枚,刚接触socket,可在server运行时socket总是创建失败,代码如下:Server:
client:
运行server显示这样:

运行client显示这样:

不知道为什么server端创建socket失败,请大神指教!
------解决思路----------------------
server创建成功了啊,只是没有循环坚挺端口,直接退出了,加个while循环
------解决思路----------------------
服务器代码第一个if括号后面;去掉
------解决思路----------------------
2L正解
------解决思路----------------------
你服务器都core掉了,你怎么可能收到消息。。
小弟是菜鸟一枚,刚接触socket,可在server运行时socket总是创建失败,代码如下:Server:
#include<stdio.h>
#include<sys/types.h>
#include<unistd.h>
#include<stdlib.h>
#include<sys/socket.h>
#include<errno.h>
#include<netinet/in.h>
#include<string.h>
#define backlog 1024
#define MAX_DATA_SIZE 12
#define server_port 3333
int main()
{
struct sockaddr_in server_sockaddr,client_sockaddr;
int sockfd,client_sockfd,receve_bytes;
int sin_size;
char buf[MAX_DATA_SIZE];
memset(buf,0,MAX_DATA_SIZE);
if((sockfd = socket(AF_INET,SOCK_STREAM,0)) == -1);
{
perror("socket");
printf("create socket error...%s\n",strerror(errno));
exit(1);
}
printf("create socket success! socketfd:%d\n",sockfd);
server_sockaddr.sin_family = AF_INET;
server_sockaddr.sin_port =htons( server_port);
server_sockaddr.sin_addr.s_addr = INADDR_ANY;
bzero(&(server_sockaddr.sin_zero),8);
if(bind(sockfd,(struct sockaddr *)&server_sockaddr,sizeof(struct sockaddr)) == -1)
{
perror("bind");
exit(1);
}
printf("bind success\n");
if(listen(sockfd,backlog) == -1)
{
perror("listen");
exit(1);
}
printf("listening...\n");
if((client_sockfd = accept(sockfd,(struct sockaddr*)&client_sockaddr,&sin_size)) == -1)
{
perror("accept");
exit(1);
}
if((receve_bytes = recv(client_sockfd,buf,MAX_DATA_SIZE,0)) == -1)
{
perror("recv");
exit(1);
}
printf("recv a connection\n");
close(sockfd);
return 0;
}
client:
#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 3333
#define MAXDATASIZE 100
int main(int argc,char*argv[])
{
int socketfd, sendbytes;
struct sockaddr_in cli_sockaddr;
char buf[MAXDATASIZE];
memset(buf,0,MAXDATASIZE);
struct hostent *host;
struct sockaddr_in serv_addr;
if((socketfd = socket(AF_INET,SOCK_STREAM,0)) == -1)
{
perror("socket");
exit(1);
}
printf("create client socket success\n");
if(argc < 2)
{
fprintf(stderr,"Please enter the server's hostname!\n");
exit(1);
}
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(3333);
bzero(&(serv_addr.sin_zero),8);
if((host=gethostbyname(argv[1])) == NULL)
{
perror("gethostbyname error!");
exit(1);
}
serv_addr.sin_addr=*((struct in_addr *)host->h_addr);
printf("connect up\n");
if((connect(socketfd,(struct sockaddr*)&serv_addr,sizeof(struct sockaddr))) == -1)
{
perror("connect");
exit(1);
}
if(send(socketfd,"hello",5,0) == -1)
{
perror("send");
exit(1);
}
close(socketfd);
return 0;
}
运行server显示这样:
运行client显示这样:
不知道为什么server端创建socket失败,请大神指教!
------解决思路----------------------
server创建成功了啊,只是没有循环坚挺端口,直接退出了,加个while循环
------解决思路----------------------
服务器代码第一个if括号后面;去掉
------解决思路----------------------
2L正解
------解决思路----------------------
你服务器都core掉了,你怎么可能收到消息。。