微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 嵌入式Linux网络编程之:网络基础编程

嵌入式Linux网络编程之:网络基础编程

时间:08-13 来源:3721RD 点击:

printf("Bind success!\n");

/*调用listen()函数,创建未处理请求的队列*/

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

{

perror("listen");

exit(1);

}

printf("Listening....\n");

/*调用accept()函数,等待客户端的连接*/

if ((client_fd = accept(sockfd,

(struct sockaddr *)&client_sockaddr, &sin_size)) == -1)

{

perror("accept");

exit(1);

}

/*调用recv()函数接收客户端的请求*/

memset(buf , 0, sizeof(buf));

if ((recvbytes = recv(client_fd, buf, BUFFER_SIZE, 0)) == -1)

{

perror("recv");

exit(1);

}

printf("Received a message: %s\n", buf);

close(sockfd);

exit(0);

}

客户端的代码如下所示:

/*client.c*/

#include <stdio.h>

#include <stdlib.h>

#include <errno.h>

#include <string.h>

#include <netdb.h>

#include <sys/types.h>

#include <netinet/in.h>

#include <sys/socket.h>

#define PORT 4321

#define BUFFER_SIZE 1024

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

{

int sockfd,sendbytes;

char buf[BUFFER_SIZE];

struct hostent *host;

struct sockaddr_in serv_addr;

if(argc < 3)

{

fprintf(stderr,"USAGE: ./client Hostname(or ip address) Text\n");

exit(1);

}

/*地址解析函数*/

if ((host = gethostbyname(argv[1])) == NULL)

{

perror("gethostbyname");

exit(1);

}

memset(buf, 0, sizeof(buf));

sprintf(buf, "%s", argv[2]);

/*创建socket*/

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

{

perror("socket");

exit(1);

}

/*设置sockaddr_in 结构体中相关参数*/

serv_addr.sin_family = AF_INET;

serv_addr.sin_port = htons(PORT);

serv_addr.sin_addr = *((struct in_addr *)host->h_addr);

bzero(&(serv_addr.sin_zero), 8);

/*调用connect函数主动发起对服务器端的连接*/

if(connect(sockfd,(struct sockaddr *)&serv_addr,

sizeof(struct sockaddr))== -1)

{

perror("connect");

exit(1);

}

/*发送消息给服务器端*/

if ((sendbytes = send(sockfd, buf, strlen(buf), 0)) == -1)

{

perror("send");

exit(1);

}

close(sockfd);

exit(0);

}

在运行时需要先启动服务器端,再启动客户端。这里可以把服务器端下载到开发板上,客户端在宿主机上运行,然后配置双方的IP地址,在确保双方可以通信(如使用ping命令验证)的情况下运行该程序即可。

$ ./server

Socket id = 3

Bind success!

Listening....

Received a message: Hello,Server!

$ ./client localhost(或者输入IP地址) Hello,Server!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top