#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;
}
}
运行代码之后,就只出现光标
memset(&server_addr, 0, sizeof(server_addr));
这一行的位置放错了。。。。
能出结果那就邪门儿了
######果然是这个问题,谢谢啦
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。