c++ 网络编程 TCP/IP

作者 : 开心源码 本文共1687个字,预计阅读时间需要5分钟 发布时间: 2022-05-12 共143人阅读

Cplusplus-tutorial-in-hindi.jpg

最近闲暇时间多了,有了时间就下定决心学习学习 cpp,之前有肯定 cpp 基础。所以 TCP/IP 为背景进行 cpp 的学习。先写一个简单 TCP 的服务端和用户端来体验一下。什么 TCP 呀 UDP 在开始接触网络编程时候是那么陌生,是那么遥远。
其实大家不要脱离实际,自己把他 magic 化,其实一切都是合乎常理和实际的。先从 TCP 来学起。
说到网络编程我们先了解一个术语套接字,突破这个术语,我们就向了解 TCP 迈出了一大步。简单比喻一下吧,我们彼此间通过打电话或者写信的进行哪种不是面对面的交流,套接字就是我们进行这些交流工具,电话机或者是邮箱,仅此而已。

TCP 整个流程和打电话差不多,要打电话先买电话,而后安装,申请号,等待呼叫。

  • 先买电话机,socket 这个函数就是安装买来电话
 serv_sock = socket(PF_INET, SOCK_STREAM, 0);

有了电话后我们去电话局申请电话号码

bind(serv_sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr))

申请完电话号码,就会有师傅上门连线,看看电话通不通

listen(serv_sock, 5)

接下里就是坐在家里等女朋友的电话了

accept(serv_sock, (struct sockaddr *)&clnt_addr, &clnt_addr_size)

流程就这么简单

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <arpa/inet.h>#include <sys/socket.h>void error_handling(char *message);int main(int argc, char const *argv[]){    int serv_sock;    int clnt_sock;    struct sockaddr_in serv_addr;    struct sockaddr_in clnt_addr;    socklen_t clnt_addr_size;    char message[] = "Hello World!";    if (argc != 2)    {        printf("Usage : %s <port>\n", argv[0]);    }    serv_sock = socket(PF_INET, SOCK_STREAM, 0);    if (serv_sock == -1)        error_handling("socket() error");    memset(&serv_addr, 0, sizeof(serv_addr));    serv_addr.sin_family = AF_INET;    serv_addr.sin_addr.s_addr = htonl(INADDR_ANY);    serv_addr.sin_port = htons(atoi(argv[1]));    if (bind(serv_sock, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) == -1)        error_handling("bind() error");    if (listen(serv_sock, 5) == -1)        error_handling("listen() error");    clnt_addr_size = sizeof(clnt_addr);    clnt_sock = accept(serv_sock, (struct sockaddr *)&clnt_addr, &clnt_addr_size);    if (clnt_sock == -1)        error_handling("accept() error");    write(clnt_sock, message, sizeof(message));    close(clnt_sock);    close(serv_sock);    return 0;}void error_handling(char *message){    fputs(message, stderr);    fputc('\n', stderr);    exit(1);}

说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » c++ 网络编程 TCP/IP

发表回复