代码拉取完成,页面将自动刷新
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
/*
* 这个头文件用于网络字节序的转换
* htonl ==> host to network long
* htons ==> host to network short
* ntohl ==> network to host long
* ntohs ==> network to host shorts
*/
int main()
{
int server = 0;
struct sockaddr_in saddr = {0}; // 对应到头文件netinet/in.h中,这个结构体中的in是什么意思?
int client = 0;
struct sockaddr_in caddr = {0};
socklen_t asize = 0;
int len = 0;
char buf[64] = {0};
int r = 0;
server = socket(PF_INET, SOCK_STREAM, 0);
if (server == -1) {
printf("server socket error\n");
return -1;
}
saddr.sin_family = AF_INET;
// 服务器每一个网卡对应一个IP地址,INADDR_ANY表示监听所有的网卡
saddr.sin_addr.s_addr = htonl(INADDR_ANY);
saddr.sin_port = htons(8899);
if (bind(server, (struct sockaddr *)&saddr, sizeof(saddr)) == -1) {
printf("server bind error\n");
return -1;
}
if (listen(server, 1) == -1) {
printf("server listen error\n");
return -1;
}
printf("server start success\n");
asize = sizeof(caddr);
client = accept(server, (struct sockaddr *)&caddr, &asize);
if (client == -1) {
printf("client accept error\n");
return -1;
}
printf("client: %d\n", client);
len = 0;
do {
int i = 0;
r = recv(client, buf, sizeof(buf), 0);
if( r > 0 ) {
len += r;
}
for(i = 0; i < r; i++) {
printf("%c", buf[i]);
}
} while ( len < 64 );
printf("\n");
send(client, "Hello world!", 12, 0);
sleep(1); // 保证上述的字符串可以发送到网络上
close(client);
close(server);
return 0;
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。