linux网络编程tcp

Posted 叶念西风

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux网络编程tcp相关的知识,希望对你有一定的参考价值。

之前学习的时候笔记没有保存好,这次重新编写一个案例。

客户端实现程序代码:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>


#define DEF_TCP_SRV_PORT 19868

int main()
{

    struct sockaddr_in addr;
    struct sockaddr_in srv_addr;
    int net_sock;
    int new_fd;

    int res;
    int len;

    char buff[128];

    // 1. socket 初始化
    // 1.1 创建socket
    net_sock = socket(AF_INET,SOCK_STREAM,0);
    if( -1 == net_sock )
    {
     printf("create socket error!\r\n");
     return -1;
    }
    // 1.2 初始化地址
    bzero( &addr, sizeof(struct sockaddr_in));

    addr.sin_addr.s_addr = htonl(INADDR_ANY);
    addr.sin_family = AF_INET;
    addr.sin_port = htons(DEF_TCP_SRV_PORT);

    // 1.3 bind地址
    bind( net_sock, (struct sockaddr *)&addr, sizeof(struct sockaddr));

    //监听
    listen( net_sock, 5 );

    len = sizeof(struct sockaddr);
    new_fd = accept( net_sock, (struct sockaddr *)(&srv_addr),&len );

    printf("server ip:%s\r\n",inet_ntoa(srv_addr.sin_addr));

    res = recv(new_fd, buff,125,0);
    buff[res] =\0;

    printf("get : %s\r\n",buff);

    close(net_sock);

    return 0;
};

服务端程序代码:

#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <fcntl.h>
#include <unistd.h>
#include <netinet/in.h>
#include <arpa/inet.h>


#define DEF_TCP_SRV_PORT 19868

int main()
{
    struct sockaddr_in srv_addr;
    int sock;
    int res;
    char buff[128];

    //创建套接字
    sock = socket(AF_INET,SOCK_STREAM,0);

    if( -1 == sock )
    {
        printf("create sock failed\r\n");
        return -1;
    }

    //设置要绑定的地址
    bzero( &srv_addr, sizeof(struct sockaddr_in));

    srv_addr.sin_addr.s_addr = inet_addr("192.168.1.21");
    srv_addr.sin_family = AF_INET;
    srv_addr.sin_port = htons(DEF_TCP_SRV_PORT);

    //连接
    res = connect(sock,(struct sockaddr *)(&srv_addr),sizeof(struct sockaddr));

    if( -1==res)
    {
        printf("connect failed\r\n");
        return -1;
    }

    printf("please input data:\r\n");
    fgets(buff,128,stdin);
    //发送数据
    send( sock, buff, strlen(buff),0);

    close(sock);

}

 

以上是关于linux网络编程tcp的主要内容,如果未能解决你的问题,请参考以下文章

Linux:TCP Socket编程(代码实战)

异常和TCP通讯

Linux网络编程——tcp并发服务器(poll实现)

linux网络编程tcp

Linux-TCP编程流程-Socket编程-单线程实现TCP客户端和服务端交互-多进程实现TCP客户端和服务端交互

linux打开终端如何启动scala,如何在终端下运行Scala代码片段?