Linux C/C++TCP通信实现
文章目录
- 一、TCP通信流程
- 二、使用步骤
- 1.TCP(客户端)
- 2.TCP(服务器端)
- 总结
一、TCP通信流程
二、使用步骤
1.TCP(客户端)
// TCP通信客户端#include<stdio.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>int main()
{//1.创建套接字int fd = socket(AF_INET, SOCK_STREAM, 0);if(fd==-1){perror("socket");exit(-1);}//2.连接服务器struct sockaddr_in saddr;inet_pton(AF_INET, "x.x.x.x", &saddr.sin_addr.s_addr);saddr.sin_family = AF_INET;saddr.sin_port = htons(9999);int ret = connect(fd, (struct sockaddr *)&saddr, sizeof(saddr));if(ret==-1){perror("connet");exit(-1);}//3.通信char recvbuf[1024] = {0};while(1){char *data = "hello ,i am client";write(fd, data, strlen(data));sleep(1);int lens = read(fd, recvbuf, sizeof(recvbuf));if(lens==-1){perror("read");exit(-1);}else if(lens>0){printf("recv server data: %s\n", recvbuf);}else if(lens==0){//表示客户端断开连接printf("server closed...");}}//关闭连接close(fd);return 0;
}
2.TCP(服务器端)
//TCP通信服务端#include<stdio.h>
#include<arpa/inet.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>int main()
{//1.创建socket(用于监听的套接字)int lfd = socket(AF_INET, SOCK_STREAM, 0);if(lfd==-1){perror("socket");exit(-1);}//2.绑定struct sockaddr_in saddr;saddr.sin_family = PF_INET;saddr.sin_addr.s_addr = INADDR_ANY; //0.0.0.0saddr.sin_port = htons(9999);int ret = bind(lfd, (struct sockaddr *)&saddr, sizeof(saddr));if(ret == -1){perror("bind");exit(-1);}//3.监听listen(lfd, 5);if(ret==-1){perror("listen");exit(-1);}//4.接受客户端连接struct sockaddr_in caddr;socklen_t len = sizeof(caddr);int cfd = accept(lfd, (struct sockaddr *)&caddr, &len);if(cfd==-1){perror("accept");exit(-1);}//输出客户端的信息char cip[16];inet_ntop(AF_INET, &caddr.sin_addr.s_addr, cip, sizeof(cip));unsigned short cport = ntohs(caddr.sin_port);printf("client ip is %s,port is %d\n", cip, cport);//5.//获取客户端的数据char recvbuf[1024] = {0};while(1){int lens = read(cfd, recvbuf, sizeof(recvbuf));if(lens==-1){perror("read");exit(-1);}else if(lens>0){printf("recv client data: %s\n", recvbuf);}else if(lens==0){//表示客户端断开连接printf("client closed...");break;}//给客户端发送数据char *data = "hello ,i am server";write(cfd, data, strlen(data));}//关闭文件描述符close(lfd);close(cfd);return 0;
}
总结
TCP的通信流程主要是这种模式。
Linux C/C++TCP通信实现相关推荐
- 基于Linux平台的TCP通信并发服务器---在线英语词典项目
文章目录 前言 一.什么是并发服务器 二.服务器的实现 三.客户端的实现 四.代码测试结果 五.代码测试注意 总结 前言 本文是我在IO进线程.网络编程学习阶段的练习项目.项目基于linux平台,利用 ...
- linux下TCP通信简单实例
linux下TCP通信简单实例 基于TCP(面向连接)的socket编程,分为服务器端和客户端 服务器端的流程如下: (1)创建套接字(socket) (2)将套接字绑定到一个本地地址和端口上(bin ...
- 1、Linux中的socket与TCP通信
socket介绍 1.所谓 socket(套接字),就是对网络中不同主机上的应用进程之间进行双向通信的端点的抽象. 2.一个套接字就是网络上进程通信的一端,提供了应用层进程利用网络协议交换数据的机制. ...
- 【Linux】网络编程三:TCP通信和UDP通信介绍及代码编写
参考连接:https://www.nowcoder.com/study/live/504/2/16. [Linux]网络编程一:网络结构模式.MAC/IP/端口.网络模型.协议及网络通信过程简单介绍 ...
- Linux网络通信——TCP通信流程
TCP通信流程 TCP是一个面向连接的,安全的,流式传输协议,这个协议是一个传输层协议. 面向连接:是一个双向连接,通过三次握手完成,断开连接需要通过四次挥手完成. 安全:tcp通信过程中,会对发送的 ...
- 【Linux后端服务器开发】TCP通信设计
目录 一.TCP通信协议的封装 二.TCP多进程通信 三.TCP多线程通信 一.TCP通信协议的封装 简单的TCP一对一通信其实完全可以不进行封装,直接分别写server端和client端的源代码,按 ...
- java tcp client断开重连_ESP8266_12 ESP8266客户端模式下的TCP通信
上一节说了UDP,这一节就聊聊TCP,毕竟它俩经常同时出现.优缺点上一节也提了一下:安全性好,速度慢. 除了这两点,还有就是: TCP通信之前是需要建立连接的,如同打电话之前先拨号一样,而UDP无连接 ...
- qint64转为qstring qt_Qt项目中TCP通信的实现方式经验总结(服务端部分)
总第20篇 本文接第19篇,继续梳理TCP通信过程中的重要知识.本文主要系统地讲解通信服务端部分,以供在以后的项目开发过程中参考.如果觉得不错可以关注专栏 面向加薪编程C/C++ ,第一时间接收文章更 ...
- 【必看】Linux 下的 TCP参数优化
简介 TCP是一种面向广域网的通信协议,目的是在跨越多个网络通信时,为两个通信端点之间提供一条具有下列特点的通信方式 (1)基于流的方式: (2)面向连接: ...
最新文章
- find到带空格文件名用xargs处理的技巧
- Chrome浏览器密码框自动填充的bug
- Coursera自动驾驶课程第15讲:GNSS and INS Sensing for Pose Estimation
- FPGA开发全攻略——概念篇
- php 类分开写,自己前几天写的无限分类类_PHP教程
- solr 时间转成java_solr时区设置解决时间多8小时问题
- 我打败了妈妈 - 张朔
- Microsoft SQL Server 2008 (RTM) 升级到 Microsoft SQL Server 2008 R2
- Auto Layout详解
- Adobe Photoshop CC已停止工作重装显卡驱动解决方法
- 大数据新闻推送你怎么看_“大数据”新闻推送中存在的不足与改进
- 蓝桥杯 ADV-222 7-2求arccos值 java
- 全面解读“数字孪生”
- cad编辑节点快捷键是什么_cad编辑节点快捷键是什么_cad进入块编辑快捷键是什么,Auto CAD进入块编辑快捷键是什么?......
- springboot影院售票小程序毕业设计-附源码201532
- vivo 推送平台架构演进
- CornerNet代码学习之pytorch多线程
- 2022 Java面试题道通科技
- 剑指offer 专项突破版 74、合并区间
- 英特尔眼中的三大科技趋势