zoukankan      html  css  js  c++  java
  • linux的最简socket编程

    一.背景

    好久没有进行linux下的socket编程了,复习一下

    二.服务端完整代码

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

    #include <errno.h>

    #include <sys/types.h>

    #include <sys/socket.h>

    #include <sys/wait.h>

    #include <netinet/in.h>

    #include <unistd.h>

    #define PORT (9000)

    #define MAX_BACKLOG (5)

    #define SEND_CONTENT "hello,jello"

    void main(void){

      int listenfd,new_fd;

      struct sockaddr_in myaddr;

      

      listenfd = socket(AF_INET,SOCK_STREAM,0);

      memset(&myaddr,0,sizeof(myaddr));

      myaddr.sin_family = AF_INET;

      myaddr.sin_port = htons(PORT);

      myaddr.sin_addr.s_addr = htonl(INADDR_ANY);

      

      bind(listenfd,(struct sockaddr*)&myaddr,sizeof(struct sockaddr));

      listen(listenfd,MAX_BACKLOG);

      while(1){  

        new_fd = accept(listenf,(struct sockaddr*)NULL,NULL);

        send(new_fd,SEND_CONTENT,strlen(SEND_CONTENT),0)

        usleep(1);

        close(new_fd);  

      }

      close(listenfd);

    }

    三.客户端完整代码

    #include <stdlib.h>

    #include <stdio.h>

    #include <string.h>

    #include <errno.h>

    #include <sys/types.h>

    #include <sys/socket.h>

    #include <sys/wait.h>

    #include <netinet/in.h>

    #include <arpa/inet.h>

    #include <unistd.h>

    #define PORT (9000)

    #define SERVER_IP "127.0.0.1"

    #define BUFF_SIZE (100)

    void main(void){

      int fd,num;

      struct sockaddr_in server_addr;

      char buff[BUFF_SIZE] = {0};

      fd = socket(AF_INET,SOCK_STREAM,0);

      memset(&server_addr,0,sizeof(server_addr));

      server_addr.sin_family = AF_INET;

      server_addr.sin_port = htons(PORT);

      inet_pton(AF_INET,SERVER_IP,&server_addr.sin_addr);

      connect(fd,(struct sockaddr*)&server_addr,sizeof(struct sockaddr));

      num = recv(fd,buff,sizeof(buff),0);

      buff[num] = '';

      printf("buff = %s,num = %d ",buff,n);

      close(fd);

    }

    四.编译及运行

    gcc server.c -o server

    gcc client.c -o client

    ./server &

    ./client

  • 相关阅读:
    在firefox里面查看AMF信息
    addFrameScript 修改自定义button 名字
    [转]游戏UI与flash 组件开发
    as 运算符 与 where T : class
    Process.Start传参
    站长工具
    SaveFileDialog使用方法
    iis admin service 无法设置 因为不是服务器?
    将文件夹层次显示在treeview控件中
    磁盘fat32转NTFS
  • 原文地址:https://www.cnblogs.com/dakewei/p/9208427.html
Copyright © 2011-2022 走看看