打印

基于嵌入式Linux的网络通信系统(源代码+报告文档)

[复制链接]
227|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
电子学长|  楼主 | 2018-9-30 11:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这是一个基于嵌入式Linux的网络通信系统,

压缩包中包含程序源代码和文档,内容详细。



服务端源程序:

#include<stdio.h>

#include<stdlib.h>

#include<errno.h>

#include<string.h>

#include<sys/types.h>

#include<netinet/in.h>

#include<sys/socket.h>

#include<sys/wait.h>

#include<unistd.h>

#include<arpa/inet.h>

#define MAXBUF 1024



int main(int argc,char *argv[])

{

        int pid;

        int sockfd,new_fd;

        socklen_t len;

        struct sockaddr_in my_addr,their_addr;

        unsigned int myport,lisnum;

        char buf[MAXBUF+1];

        if(argv[2])

                myport=atoi(argv[2]);

        else

                myport=7575;

        if(argv[3])

                lisnum=atoi(argv[3]);

        else

                lisnum=5;

        if((sockfd=socket(AF_INET,SOCK_STREAM,0))==-1)

        {

                perror("socket");

                exit(EXIT_FAILURE);

        }



        bzero(&my_addr,sizeof(my_addr));

        my_addr.sin_family=AF_INET;

        my_addr.sin_port=htons(myport);

        if(argv[1])

                my_addr.sin_addr.s_addr=inet_addr(argv[1]);

        else

                my_addr.sin_addr.s_addr=INADDR_ANY;

        if(bind(sockfd,(struct sockaddr *)&my_addr,sizeof(struct sockaddr))==-1)

        {

                perror("bind");

                exit(EXIT_FAILURE);

        }

        if(listen(sockfd,lisnum)==-1)

        {

                perror("listen");

                exit(EXIT_FAILURE);

        }

        printf("wait for connect!\n");

        len=sizeof(struct sockaddr);

        if((new_fd=accept(sockfd,(struct sockaddr *)&their_addr,&len))==-1)

        {

                perror("accept");

                exit(EXIT_FAILURE);

        }

        else

                printf("server:got connection from %s,port %d,socket %d\n",inet_ntoa(their_addr.sin_addr),ntohs(their_addr.sin_port),new_fd);

        while(1)

        {

                printf("newfd=%d\n",new_fd);

                bzero(buf,MAXBUF+1);

                printf("input the message to send:");

                fgets(buf,MAXBUF,stdin);

                if(!strncasecmp(buf,"quit",4))

                {

                        printf("i will close the connect!\n");

                        break;               

                }

                len=send(new_fd,buf,strlen(buf)-1,0);

                if(len>0)

                        printf("message:%s\t send sucessful,send %dbyte!\n",buf,len);

                else

                {

                        printf("message'%s' send failure!errno code is %d,errno message is '%s'\n",buf,errno,strerror(errno));

                        break;        

                }

                bzero(buf,MAXBUF+1);

                len=recv(new_fd,buf,MAXBUF,0);

                if(len>0)

                        printf("message recv successful:'%s',%dByte recv\n",buf,len);

                else

                {

                        if(len<0)

                                printf("recv failure!errno code is %d,errno message is '%s'\n",errno,strerror(errno));

                        else

                                printf("the other one close quit\n");

                        break;

                }

使用特权

评论回复

相关帖子

发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

424

主题

447

帖子

1

粉丝