用c语言编写socket程序,但是运行之后没有任何反应

IT小托 发布于 2015/05/17 11:31
阅读 508
收藏 0
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#define PORT 3490


int main(int argc, char *argv[])
{
int server_sockfd;
int client_sockfd;
int len;
int sin_size;
char buf[BUFSIZ];
struct sockaddr_in server_addr;
struct sockaddr_in client_addr;
server_addr.sin_family = AF_INET;
server_addr.sin_port = htons(PORT);
server_addr.sin_addr.s_addr = htonl(INADDR_ANY);
memset(&server_addr, 0, sizeof(server_addr));
printf("hello world");


/*创建客户端套接字--IPv4协议,面向连接通信,TCP协议*/
if((server_sockfd = socket(AF_INET, SOCK_STREAM, 0)) == 0){
perror("creating socket failed");
return -1;
}


/* 将套接字与端口关联 */
if( (bind(server_sockfd, (struct sockaddr *)&server_addr, sizeof(struct sockaddr))) != 0){
perror("bind failed");
return -1;
}


printf("waiting for client connecting");


/* 监听客户端连接请求 -- 监听队列长度为5 */
listen(server_sockfd, 5);

/* 等待客户端连接请求到达 */
sin_size = sizeof(struct sockaddr);
if((client_sockfd = accept(server_sockfd, (struct sockaddr *)&client_addr, &sin_size)) != 0){
perror("accept failed");
return -1;
}


/* 发送欢迎信息 */
printf("accept client %s\n", inet_ntoa(client_addr.sin_addr));
send(client_sockfd, "welcome to my server\n", 21, 0);


/* 接收客户端的数据并将其发送给客户端 ---recv返回接收到的字节数,send返回发送的字节数 */
while((len=recv(client_sockfd, buf, BUFSIZ, 0)) > 0){
buf[len] = '\0';
printf("%s/n", buf);
if(send(client_sockfd, buf, len, 0)<0){
perror("send");
return -1;
}
close(client_sockfd);
close(server_sockfd);
return 0;
}

}

运行代码之后,就只出现光标

加载中
0
Jordan
Jordan

memset(&server_addr, 0, sizeof(server_addr));

这一行的位置放错了。。。。

能出结果那就邪门儿了

IT小托
IT小托
果然是这个问题,谢谢啦
返回顶部
顶部