项目开发日报表 嵌入式linux C 第10天

本文记录了嵌入式Linux项目开发的第10天,重点介绍了使用C语言进行网络编程,涉及client.c和server.c两个文件的Socket应用。通过此日报表,读者可以了解到如何在嵌入式环境中实现网络通信。
摘要由CSDN通过智能技术生成

项目开发日报表

项目名称【苏嵌实训-嵌入式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;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值