socket tcp note

socket tcp note,第1张


#ifndef _HEAD_SOCKET_H
#define _HEAD_SOCKET_H

#include               /* io */
#include           /* See NOTES */
#include          /* socket */
#include             /* bzero */
#include             /* bool */
#include              /* strlen */
#include 
#include           /* struct sockaddr_in */
#include              /* exit */
#include              /* read */

#define SIZE  100

// typedef  unsigned int   UINT;
// typedef  unsigned char  UCHAR;
// typedef  unsigned char  USHOET;

bool JUDEG = true;



#endif
#include "head_socket.h"

/* ./Jack   :(./Jack 192.168.1.73 50001) */
int main(int argc, char const *argv[])
{
    if(argc != 3)
    {
        printf("Usage: %s \n", argv[0]);
        exit(0);
    }
    /* Create socket:| AF_INET: ipv4  SOCK_STREAM: stream socket */
    int fd = socket(AF_INET, SOCK_STREAM, 0);
    /* connect Rose */
    /* IPV4 Address struct */
    struct sockaddr_in srvaddr, cliaddr;
    socklen_t len = sizeof(srvaddr);
    bzero(&srvaddr, len);
    srvaddr.sin_family = AF_INET;
    inet_pton(AF_INET, argv[1], &srvaddr.sin_addr);
    srvaddr.sin_port   = htons(atoi(argv[2]));/* host to network short */
    connect(fd, (struct sockaddr *)&srvaddr, len);
    /* store data */
    char buf[SIZE];
    /* read data constant */
    while(JUDEG)
    {
        /* empty buf */
        bzero(buf, SIZE);
        /* input data */
        if(fgets(buf, SIZE, stdin) ==NULL)
            break;
        if(strncmp(buf, "quit", 4) == 0)
        {
            fprintf(stdout,"Process exit!\n");
            break;
        }
        /* send data (write data to fd) */
        write(fd, buf, strlen(buf));
    }
    /* close socket */
    close(fd);
    /* exit */
    return 0;
}

#include "head_socket.h"

/* ./Rose PORT : (./Rose 50001) */
int main(int argc, const char *argv[])
{
    if(argc != 2)
    {
        printf("Usage: %s \n", argv[0]);
        exit(0);
    }
    /* Create socket:| AF_INET: ipv4  SOCK_STREAM: stream socket */
    int fd = socket(AF_INET, SOCK_STREAM, 10);

    /* Bind Address(IP:PORT) */
    /* IPV4 Address struct */
    struct sockaddr_in srvaddr, cliaddr;
    socklen_t len = sizeof(srvaddr);
    bzero(&srvaddr, len);
    srvaddr.sin_family = AF_INET;
    srvaddr.sin_port   = htons(atoi(argv[1]));/* host to network short */
    srvaddr.sin_addr.s_addr   = htonl(INADDR_ANY);
    // inet_pton(AF_INET, "192.168.1.73", &srvaddr.sin_addr);
    bind(fd, (struct sockaddr *)&srvaddr, len);

    /* Set listen socket */
    listen(fd, 3);
    /* wait client connect */
    len = sizeof(cliaddr);
    int connect_fd = accept(fd, (struct sockaddr *)&cliaddr, &len);
    char peeraddr[50];
    bzero(peeraddr, 50);
    printf("new connection: %s:%hu\n", 
    inet_ntop(AF_INET, &cliaddr.sin_addr, peeraddr, 50), 
    cliaddr.sin_port);
    /* store data */
    char buf[SIZE];
    /* read data constant */
    while(JUDEG)
    {
        /* empty buf */
        bzero(buf, SIZE);
        if(read(connect_fd, buf, SIZE) == 0)
            break;
        if(strncmp(buf, "quit", 4) == 0)
        {
            fprintf(stdout,"Process exit!\n");
            //printf("Process exit!\n");
            break;
        }
        printf("from Jack: %s", buf);
    }
    /* close socket */
    close(fd);
    close(connect_fd);
    /* exit */
    return 0;
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/872785.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-13
下一篇2022-05-13

发表评论

登录后才能评论

评论列表(0条)

    保存