项目开发日报表
项目名称 | 【苏嵌实训-嵌入式linux C 第10天】 |
---|---|
今日进度以及任务 | 1.上午主要复习了一下计算机网络的一些知识点 2.下午学习了网络编程 |
本日任务完成情况 | 按计划完成任务,编写了网络编程的程序 |
本日开发中出现的问题汇总 | 在bind时会出现找不到地址,是因为ip地址写错了 |
本日未解决问题 | 总是会报地址已使用的错误 |
本日开发收获 | 学会了在 Linux 环境下用 socket 编程实现服务器和客户端之间的简单通信 |
其他 | 无 |
作业
client.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <arpa/inet.h>
#define PORT 33333
int main()
{
int sockfd;
struct sockaddr_in s_addr;
if((sockfd=socket(AF_INET,SOCK_STREAM,0)) <0)
{
perror("socket error");
exit(1);
}
printf("client socket success\n");
bzero(&s_addr,sizeof(struct sockaddr_in));
s_addr.sin_family=AF_INET;
s_addr.sin_port=htons(PORT);
s_addr.sin_addr.s_addr=inet_addr("192.168.42.128");
if(connect(sockfd,(struct sockaddr *)(&s_addr),sizeof(struct sockaddr_in))<0)
{
perror("connect error");
exit(1);
}
printf("connect success\n");
write(sockfd,"hello world",12);
usleep(2);
return 0;
}
server.c
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/socket.h>
//#include <sys/un.h>
#include <arpa/inet.h>
#include <string.h>
#define PORT 33333
int main()
{
int sockfd;
int cfd;
int c_len;
char buf[1024];
struct sockaddr_in s_addr;
struct sockaddr_in c_addr;
sockfd=socket(AF_INET,SOCK_STREAM,0);
if(sockfd == -1)
{
perror("socket create error");
exit(1);
}
printf("socket success\n");
int opt=1;
setsockopt(sockfd,SOL_SOCKET,SO_REUSEADDR,&opt,sizeof(opt));
bzero((&s_addr),sizeof(struct sockaddr_in));
s_addr.sin_family=AF_INET;
s_addr.sin_port=htons(PORT);//zijiexuzhuanhua
s_addr.sin_addr.s_addr=inet_addr("192.168.42.128");
if(bind(sockfd,(struct sockaddr *)(&s_addr),sizeof(struct sockaddr_in))<0)
{
perror("bind error");
exit(1);
}
printf("bind success\n");
if(listen(sockfd,3)<0)
{
perror("listen error");
exit(1);
}
printf("listen success\n");
while(1)
{
memset(buf,0,sizeof(buf));
c_len=sizeof(struct sockaddr_in);
bzero(&c_addr,sizeof(struct sockaddr_in));
cfd=accept(sockfd,(struct sockaddr *)(&s_addr),&c_len);
if(cfd<0)
{
perror("accept error");
exit(1);
}
printf("accept error\n");
printf("port=%d ip=%s\n",ntohs(c_addr.sin_port),inet_ntoa(c_addr.sin_addr));
read(cfd,buf,sizeof(buf));
printf("recv=%s\n",buf);
}
return 0;
}