TCP IP介绍及举例

 

  • 介绍一下TCP IP

TCP/IP是一种计算机网络协议,它是互联网的基础协议之一。该协议是由传输控制协议(TCP)和互联网协议(IP)两部分组成。TCP协议负责数据的分割、传输和重组,而IP协议则负责数据包的路由和寻址。TCP/IP协议被广泛应用于互联网、局域网和广域网等各种网络环境中,它为网络通信提供了可靠和高效的基础。虽然TCP/IP协议的实现和细节十分复杂,但它的存在使得我们的数字世界更加连接、高效、便捷。

除了TCP和IP,TCP/IP协议还包括一些其他的协议,例如用户数据报协议(UDP)、互联网控制消息协议(ICMP)和地址解析协议(ARP)等。这些协议共同构成了一个完整的网络通信体系,使得不同的计算机和设备之间可以进行通信和数据交换。TCP/IP协议的广泛应用也促进了信息技术的发展和普及,给人们的生活和工作带来了很多便利。

  • 举个TCP IP的例子

TCP/IP协议是计算机网络通信中最常用的协议之一。例如,在浏览网页时,浏览器会使用TCP/IP协议将请求发送到服务器,服务器接收请求并使用TCP/IP协议将响应发送回浏览器。这种通信方式确保了数据传输的可靠性和准确性,并保护了通信双方的隐私。除了网页浏览外,TCP/IP协议还广泛应用于电子邮件、文件传输和远程登录等各种互联网应用。

  • 用c语言 写个TCP IP的例子

首先,我们需要了解TCP/IP协议的基本概念。TCP/IP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。在C语言中,我们可以使用套接字(socket)编程来实现TCP/IP通信。

 

下面是一个简单的C语言TCP/IP客户端和服务器的例子:

 

1. 创建一个TCP/IP服务器:

 

```c

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <arpa/inet.h>

#include <sys/socket.h>

 

#define BUF_SIZE 1024

void error_handling(char *message);

 

int main(int argc, char *argv[])

{

    int serv_sock, clnt_sock;

    char message[BUF_SIZE];

    int str_len, i;

 

    struct sockaddr_in serv_adr, clnt_adr;

    socklen_t clnt_adr_sz;

 

    if (argc != 2)

    {

        printf("Usage : %s <port>

", argv[0]);

        exit(1);

    }

 

    serv_sock = socket(PF_INET, SOCK_STREAM, 0);

    if (serv_sock == -1)

        error_handling("socket() error");

 

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

    serv_adr.sin_family = AF_INET;

    serv_adr.sin_addr.s_addr = htonl(INADDR_ANY);

    serv_adr.sin_port = htons(atoi(argv[1]));

 

    if (bind(serv_sock, (struct sockaddr *)&serv_adr, sizeof(serv_adr)) == -1)

        error_handling("bind() error");

 

    if (listen(serv_sock, 5) == -1)

        error_handling("listen() error");

 

    clnt_adr_sz = sizeof(clnt_adr);

 

    for (i = 0; i < 5; i++)

    {

        clnt_sock = accept(serv_sock, (struct sockaddr *)&clnt_adr, &clnt_adr_sz);

        if (clnt_sock == -1)

            error_handling("accept() error");

        else

            printf("Connected client %d 

", i + 1);

 

        while ((str_len = read(clnt_sock, message, BUF_SIZE)) != 0)

            write(clnt_sock, message, str_len);

 

        close(clnt_sock);

    }

    close(serv_sock);

    return 0;

}

 

void error_handling(char *message)

{

    fputs(message, stderr);

    fputc('

', stderr);

    exit(1);

}

```

 

2. 创建一个TCP/IP客户端:

 

```c

#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <unistd.h>

#include <arpa/inet.h>

#include <sys/socket.h>

 

#define BUF_SIZE 1024

void error_handling(char *message);

 

int main(int argc, char *argv[])

{

    int sock;

    char message[BUF_SIZE];

    int str_len;

    struct sockaddr_in serv_adr;

 

    if (argc != 3)

    {

        printf("Usage : %s <IP> <port>

", argv[0]);

        exit(1);

    }

 

    sock = socket(PF_INET, SOCK_STREAM, 0);

    if (sock == -1)

        error_handling("socket() error");

 

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

    serv_adr.sin_family = AF_INET;

    serv_adr.sin_addr.s_addr = inet_addr(argv[1]);

    serv_adr.sin_port = htons(atoi(argv[2]));

 

    if (connect(sock, (struct sockaddr *)&serv_adr, sizeof(serv_adr)) == -1)

        error_handling("connect() error!");

    else

        puts("Connected...........");

 

    while (1)

    {

        fputs("Input message(Q to quit): ", stdout);

        fgets(message, BUF_SIZE, stdin);

 

        if (!strcmp(message, "q

") || !strcmp(message, "Q

"))

            break;

 

        write(sock, message, strlen(message));

        str_len = read(sock, message, BUF_SIZE - 1);

        message[str_len] = 0;

        printf("Message from server: %s", message);

    }

 

    close(sock);

    return 0;

}

 

void error_handling(char *message)

{

    fputs(message, stderr);

    fputc('

', stderr);

    exit(1);

}

```

 

要运行这些示例,请将它们分别保存为`tcp_server.c`和`tcp_client.c`,然后使用以下命令编译和运行:

 

1. 编译服务器:`gcc tcp_server.c -o tcp_server`

2. 编译客户端:`gcc tcp_client.c -o tcp_client`

3. 运行服务器:`./tcp_server <port>`(将`<port>`替换为您选择的端口号)

4. 在一个终端窗口中运行客户端:`./tcp_client <IP> <port>`(将`<IP>`和`<port>`替换为服务器的IP地址和端口号)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zero2100

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值