c语言实现简单的tcp客户端

这篇具有很好参考价值的文章主要介绍了c语言实现简单的tcp客户端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

功能:实现一个简单的tcp客户端,连接本地端口8888的tcp服务端,并发送一条报文。
 文章来源地址https://www.toymoban.com/news/detail-623507.html

/* 
 * File:   main.c
 * Author: vincent
 *
 * Created on 2023年8月3日, 上午9:56
 */

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <pthread.h>

#define TARGET_PORT 8888
#define TARGET_IP "127.0.0.1"

/*
 * 
 */
int main(int argc, char** argv)
{
    int ret = 1;
    int i;
    unsigned char recv_buff[1024] = {0};
    int read_len = 0;
    int send_len = 0;
    unsigned char *send_data = "hello,this is a tcp client\n";

    //创建套接字
    int socket_fd = socket(AF_INET, SOCK_STREAM, 0);
    if (socket_fd < 0)
    {
        printf("socket err\n");
        return -1;
    }
    printf("socket create success sfd=%d\n", socket_fd);

    struct sockaddr_in dest;
    socklen_t len = sizeof (dest);
    dest.sin_family = AF_INET;
    dest.sin_port = htons(TARGET_PORT);
    dest.sin_addr.s_addr = inet_addr(TARGET_IP);
    ret = connect(socket_fd, (const struct sockaddr *) &dest, len);
    if (ret < 0)
    {
        perror("connect");
        close(socket_fd);
        socket_fd = -1;
        return -1;
    }


    send_len = send(socket_fd, send_data, strlen(send_data), 0);
    if (send_len <= 0)
    {
        printf("send err\n");
        close(socket_fd);
        socket_fd = -1;
        return -1;
    }

    memset(recv_buff, 0x00, sizeof (recv_buff));

    read_len = recv(socket_fd, recv_buff, sizeof (recv_buff), 0);
    if (read_len < 0)
    {
        printf("recv err\n");
        close(socket_fd);
        socket_fd = -1;
        return -1;
    } else if (read_len == 0)
    {
        printf("close \n");
        close(socket_fd);
        socket_fd = -1;
        return -1;
    }


    printf("recv data: %s\n", recv_buff);
    //    for (i = 0; i < read_len; i++)
    //    {
    //        printf("%02x ", recv_buff[i]);
    //    }
    //    printf("\n");
    close(socket_fd);
    socket_fd = -1;
    return (EXIT_SUCCESS);
}

到了这里,关于c语言实现简单的tcp客户端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 《TCP/IP网络编程》阅读笔记--基于Windows实现Hello Word服务器端和客户端

    目录 1--Hello Word服务器端 2--客户端 3--编译运行 3-1--编译服务器端 3-2--编译客户端 3-3--运行 运行结果:

    2024年02月10日
    浏览(43)
  • 【计算机网络】 基于TCP的简单通讯(客户端)

    加载库 创建套接字 连接服务端 连接服务端我们使用的是connect()函数,分别为连接使用的socket,连接的地址信息,连接的地址信息长度。返回值为int类型,如果没有错误返回0,否则返回SOCKET_ERROR。 收发数据 关闭套接字、卸载库 这样我们的TCP协议简单通讯就写好了。 先运行

    2024年02月07日
    浏览(43)
  • TCP IP网络编程(四) 基于TCP的服务器端、客户端

    TCP/IP协议栈 ​ TCP/IP协议栈 TCP/IP协议栈共分为4层,可以理解为数据收发分成了4个层次化过程。 ​ TCP协议栈 ​ UDP协议栈 链路层 链路层是物理连接领域标准化的结果,也是最基本的领域,专门定义LAN、WAN、MAN等网络标准。两台主机通过网络进行数据交换,这需要像下图所示

    2024年01月16日
    浏览(41)
  • TCP IP网络编程(五) 基于TCP的服务器端、客户端 (补充)

    回声客户端出现的问题 在上一节基于TCP的服务器端、回声客户端中,存在问题: 如果数据太大,操作系统就有可能把数据分成多个数据包发送到客户端,客户端有可能在尚未收到全部数据包时就调用read函数 问题出在客户端,而不是服务器端,先来对比一下客户端与服务器端

    2024年02月09日
    浏览(49)
  • 《TCP/IP网络编程》阅读笔记--基于TCP的服务器端/客户端

    目录 1--TCP/IP协议栈 2--TCP服务器端默认函数调用顺序 3--TCP客户端的默认函数调用顺序 4--Linux实现迭代回声服务器端/客户端 5--Windows实现迭代回声服务器端/客户端 6--TCP原理 7--Windows实现计算器服务器端/客户端         TCP/IP协议栈共分 4 层,可以理解为数据收发分成了 4 个层

    2024年02月10日
    浏览(43)
  • 【网络原理】使用Java基于TCP搭建简单客户端与服务器通信

    TCP服务器与客户端的搭建需要借助以下API ServerSocket 是创建TCP服务端Socket的API。 ServerSocket 构造方法 : 方法签名 方法说明 ServerSocket(int port) 创建一个服务端流套接字Socket,并绑定到指定端口 ServerSocket 方法: 方法签名 方法说明 Socket accept() 开始监听指定端口(创建时绑定的端

    2024年03月12日
    浏览(67)
  • C++网络通信实例(TCP/IP协议,包括服务端与客户端通信)

    创作不易 觉得有帮助请点赞关注收藏 TCP/IP是当下网络协议栈中的主流协议 TCP属于传输层的协议  可靠传输 包括经典的三次握手等等 IP协议是网络层协议 尽全力传输但不可靠 学过计算机网络的同学们对这个应该比较熟悉 以下是使用C++进行网络通信的实例  服务端 主要使用

    2024年02月14日
    浏览(40)
  • 《TCP/IP网络编程》阅读笔记--基于UDP的服务器端/客户端

    目录 1--TCP和UDP的主要区别 2--基于 UDP 的数据 I/O 函数 3--基于 UDP 的回声服务器端/客户端 4--UDP客户端Socket的地址分配 5--UDP存在数据边界 6--UDP已连接与未连接的设置 ① TCP 提供的是可靠数据传输服务,而 UDP 提供的是不可靠数据传输服务; ② UDP 在结构上比 TCP 更简洁,其不会

    2024年02月09日
    浏览(50)
  • Nginx+netty实现tcp负载均衡,获取客户端真实ip

    在nginx.conf文件中,events,http同级添加配置 启动nginx服务 启动2个服务netty服务设置nginx中8888,8889端口。 使用tcp工具连接并发送数据测试 参考博客 参考链接1 参考链接2

    2024年02月06日
    浏览(39)
  • 【网络编程】实现UDP/TCP客户端、服务器

    需要云服务器等云产品来学习Linux的同学可以移步/--腾讯云--/--阿里云--/--华为云--/官网,轻量型云服务器低至112元/年,新用户首次下单享超低折扣。   目录 一、UDP 1、Linux客户端、服务器 1.1udpServer.hpp 1.2udpServer.cc 1.3udpClient.hpp 1.4udpClient.cc 1.5onlineUser.hpp 2、Windows客户端 二、T

    2024年02月06日
    浏览(45)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包