项目开发日报表
项目名称 | 【苏嵌实训-嵌入式 linux C 第11天】 | |
今日进度以及任务 |
| |
本日任务完成情况 | 见附录 | |
本日开发中出现的问题汇总 | 无 | |
本日未解决的问题 | 无 | |
本日开发收获 | 加深了对c语言的理解,加深了对网络下线程编程的理解 | |
其他 | 无 |
二、网络线程编程代码实现
TCP的服务端:
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define PORT 33333
int main()
{
int sockfd;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd == -1){
perror("socket create failed!");
exit(1);
}
int opt = 1;
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof (opt));
struct sockaddr_in addr;
bzero(&addr, sizeof (struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = inet_addr("192.168.43.106"); //自己主机IP
if(bind(sockfd, (struct sockaddr*)(&addr), sizeof (struct sockaddr_in)) < 0){
perror("bind failed!");
exit(1);
}
if(listen(sockfd, 3) < 0){
perror("listen failed!");
exit(1);
}
printf("listen successful\n");
char buffer[1024];
while (1) {
memset(buffer, 0, sizeof(buffer));
struct sockaddr_in c_addr;
socklen_t c_len = sizeof (struct sockaddr_in);
int cfd;
bzero(&c_addr, sizeof (struct sockaddr_in));
cfd = accept(sockfd, (struct sockaddr*)(&c_addr), &c_len);
if(cfd == -1){
perror("accept failed");
exit(1);
}
printf("accept successful\n");
printf("port = %d, ip = %s\n", ntohs(c_addr.sin_port), inet_ntoa(c_addr.sin_addr));
recv(cfd, buffer, sizeof(buffer), 0);
printf("re: %s \n", buffer);
send(cfd, buffer, sizeof(buffer), 0);
}
return 0;
}
TCP的客户端:
#include <stdio.h>
#include <stdlib.h>
#include <strings.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#define PORT 33333
int main()
{
int sockfd;
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if(sockfd == -1){
perror("socket create failed!");
exit(1);
}
int opt = 1;
setsockopt(sockfd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof (opt));
struct sockaddr_in addr;
bzero(&addr, sizeof (struct sockaddr_in));
addr.sin_family = AF_INET;
addr.sin_port = htons(PORT);
addr.sin_addr.s_addr = inet_addr("192.168.43.106"); //自己主机IP
if(bind(sockfd, (struct sockaddr*)(&addr), sizeof (struct sockaddr_in)) < 0){
perror("bind failed!");
exit(1);
}
if(listen(sockfd, 3) < 0){
perror("listen failed!");
exit(1);
}
printf("listen successful\n");
char buffer[1024];
while (1) {
memset(buffer, 0, sizeof(buffer));
struct sockaddr_in c_addr;
socklen_t c_len = sizeof (struct sockaddr_in);
int cfd;
bzero(&c_addr, sizeof (struct sockaddr_in));
cfd = accept(sockfd, (struct sockaddr*)(&c_addr), &c_len);
if(cfd == -1){
perror("accept failed");
exit(1);
}
printf("accept successful\n");
printf("port = %d, ip = %s\n", ntohs(c_addr.sin_port), inet_ntoa(c_addr.sin_addr));
recv(cfd, buffer, sizeof(buffer), 0);
printf("re: %s \n", buffer);
send(cfd, buffer, sizeof(buffer), 0);
}
return 0;
}