嵌入式 TCP网络编程实例

原创 2013年12月02日 14:51:04
               server.c

#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>
//#include <openssl/ssl.h>
//#include <openssl/err.h>
#include <pthread.h>
#include <sys/time.h>

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/route.h>
#include <unistd.h>
#include <signal.h>

 

#include <sys/time.h>
#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <dirent.h>
#include <sys/vfs.h>


#define SERVER_PORT 8003
#define BACKLOG 10
int main(void)
{
    int sockfd,conn_fd;
    struct sockaddr_inmy_addr;
    struct sockaddr_intheir_addr;
    intsin_size;
    if ((sockfd = socket(AF_INET,SOCK_STREAM, 0)) == -1)
    {
       fprintf(stderr,"socket error!\n");
       exit(1);
    }
    my_addr.sin_family =AF_INET;
    my_addr.sin_port =htons(SERVER_PORT);
    my_addr.sin_addr.s_addr =INADDR_ANY;
   bzero(&(my_addr.sin_zero), 8);
    if (bind(sockfd, (structsockaddr *)&my_addr, sizeof(struct sockaddr)) ==-1)
    {
       fprintf(stderr,"bind error!\n");
       exit(1);
    }
    if (listen(sockfd, BACKLOG)== -1)
    {
       fprintf(stderr,"listen error!\n");
       exit(1);
    }
    while (1)
    {
       sin_size =sizeof(struct sockaddr_in);
       if ((conn_fd= accept(sockfd, (struct sockaddr *)&their_addr,&sin_size)) == -1)
       {
         fprintf(stderr, "accepterror!\n");
         continue;
       }
       printf("server:got connection from %s\n",inet_ntoa(their_addr.sin_addr));
       if(!fork())
       {
          if(send(conn_fd, "Hello, world!\n", 14, 0) == -1)
            fprintf(stderr, "send error!\n");
         close(conn_fd);
         exit(0);
       }
       close(conn_fd);
       while(waitpid(-1,NULL, WNOHANG) > 0);
    }
}
client.c

#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>
//#include <openssl/ssl.h>
//#include <openssl/err.h>
#include <pthread.h>
#include <sys/time.h>

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <net/if.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/route.h>
#include <unistd.h>
#include <signal.h>

 

#include <sys/time.h>
#include <string.h>
#include <stdio.h>
#include <fcntl.h>
#include <dirent.h>
#include <sys/vfs.h>

#define SERVER_PORT 8003
#define MAXDATASIZE 100
int main(int argc, char *argv[])
{
    int sockfd,numbytes;
    charbuf[MAXDATASIZE];
    struct hostent*he;
    struct sockaddr_inserv_addr;
    if (argc !=2)
    {
       fprintf(stderr,"usage: cilent hostname\n");
       exit(1);
    }
    if ((he =gethostbyname(argv[1])) == NULL)
    {
       fprintf(stderr,"gethostbyname error!\n");
       exit(1);
    }
    if ((sockfd = socket(AF_INET,SOCK_STREAM, 0)) == -1)
    {
       fprintf(stderr,"socket error!\n");
       exit(1);
    }
    serv_addr.sin_family =AF_INET;
    serv_addr.sin_port =htons(SERVER_PORT);
    serv_addr.sin_addr =*((struct in_addr *)he->h_addr);
   bzero(&(serv_addr.sin_zero), 8);
    if (connect(sockfd, (structsockaddr *)&serv_addr, sizeof(struct sockaddr)) ==-1)
    {
       fprintf(stderr,"connect error!\n");
       exit(1);
    }
    if ((numbytes = read(sockfd,buf, MAXDATASIZE)) == -1)
    {
       fprintf(stderr,"read error!\n");
       exit(1);
    }
    buf[numbytes] ='\0';
    printf("Received: %s",buf);
   close(sockfd);
}
编译:
gcc server.c -o server
gcc client.c -o client
执行:
打开一终端执行:./server
打开另一终端执行:./client 127.0.0.1

相关文章推荐

linux 网络编程 Tcp文件服务器

参考链接:http://blog.csdn.net/yanghaoran321/article/details/7882760 程序功能:      客户端能够通过命令显示文件服务器上的文件,...

<网络编程培训之一> 编程实现IP/TCP/UDP报文

题目 编程实现 IP,TCP,UDP 报文格式。实现报文添加头部、取出 头部等基本操作。 题目解读 我们在很多讲解TCP/IP的书上都可以看到TCP/UDP/IP的结构定义格式,以及每个字段...

嵌入式 Linux网络编程(四)——Select机制

嵌入式 Linux网络编程(四)——Select机制一、select工作机制    poll和select,都是基于内核函数sys_poll实现的,不同在于在linux中select是从BSD Uni...

嵌入式网络编程-自学篇

from : http://www.cnblogs.com/miosec/archive/2013/02/12/2910225.html 目的:想在路由器里做一个自动判断网络连接类型...

嵌入式网络编程

在Linux中的网络编程是通过socket接口来进行的。是一种文件描述符。socket也有一个类似于打开文件的函数调用,该函数返回一个整型的socket描述符,随后的连接建立、数据传输等操作都是通过s...

嵌入式 获取网卡设备以及IP和MAC地址示例以及网络编程之ioctl小结

#include #include #include #include #include #include #include #include #ifdef SOLAR...
  • skdkjxy
  • skdkjxy
  • 2014年04月28日 15:57
  • 1839

网络编程 嵌入式

  • 2012年10月05日 10:37
  • 1.79MB
  • 下载

完全嵌入式网络编程

  • 2013年12月06日 11:05
  • 5.7MB
  • 下载

嵌入式linux的网络编程(2)--TCP Server程序设计

嵌入式linux的网络编程(1)--TCP Server程序设计 前面简单介绍了TCP/IP协议,事实上该协议非常复杂,要编写一个优秀的网络程序也非易事.下面我们通过一个例子的学习达到对网络编程有一个...
  • ce123
  • ce123
  • 2013年12月19日 08:14
  • 7312

嵌入式实习-day6-网络编程

  • 2017年11月20日 10:54
  • 1.14MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:嵌入式 TCP网络编程实例
举报原因:
原因补充:

(最多只允许输入30个字)