开发者社区> 问答> 正文

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

#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;

}

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

展开
收起
kun坤 2020-05-29 10:09:14 694 0
1 条回答
写回答
取消 提交回答
  • memset(&server_addr, 0, sizeof(server_addr));
    这一行的位置放错了。。。。
    能出结果那就邪门儿了

    ######果然是这个问题,谢谢啦

    2020-05-29 14:11:08
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
15分钟打造你自己的小程序 立即下载
小程序 大世界 立即下载
《15分钟打造你自己的小程序》 立即下载