网络编程 终端间的通讯
tcp
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。
TCP旨在适应支持多网络应用的分层协议层次结构。 连接到不同但互连的计算机通信网络的主计算机中的成对进程之间依靠TCP提供可靠的通信服务。TCP假设它可以从较低级别的协议获得简单的,可能不可靠的数据报服务。 原则上,TCP应该能够在从硬线连接到分组交换或电路交换网络的各种通信系统之上操作。
终端间的通讯
我们可以通过相关的vim文件,来编写相关代码,用来实现两个终端的信息传递。
下面是接收端的相关代码,如图
上面代码是用来接收终端的代码
我们通过
下面展示一些 内联代码片
。
// A code block
gcc 加文件名
// An highlighted block
gcc 加文件名
产生相应的.out文件,运行.out文件,接收端的终端就已经配置好了,如下图
配置发送终端
下面是相关代码
要想向接收端发送相关信息,首先我们要知道IP地址
下面是IP地址的获取方式
指令为
下面展示一些 内联代码片
。
// A code block
ifconfig -a
// An highlighted block
ifconfig -a
若Ubuntu没有插件,则运行下列指令下载
下面展示一些 内联代码片
。
// A code block
sudo apt install net-tools
// An highlighted block
sudo apt install net-tools
这样就能获取IP地址
下面就是要运行client文件,指令如下
下面展示一些 内联代码片
。
// A code block./client.out IP地址
// An highlighted block./client.out IP地址
然输入所要发送的信息,结果如下
多线程
客户端的while代码
// An highlighted block
while (1){if(fgets(ucSendBuf, 999, stdin)){iSendLen = send(iSocketClient, ucSendBuf, strlen(ucSendBuf), 0);if(iSendLen <= 0){close(iSocketClient);return -1;} } iRecvLen = iRecvLen = recv(iSocketClient, ucRecvBuf, 999, 0);if (iRecvLen <= 0) {close(iSocketClient); //一直接受客户端传来的消息return -1;}else {ucRecvBuf[iRecvLen] = '\0'; //加上结束符printf("Feedback:%s\n", ucRecvBuf);}}
服务端的代码
// An highlighted block
while (1){iAddrLen = sizeof(struct sockaddr);/* 调用accept函数来等待客户端来连接,客户连接成功返回一个值,连接失败返回-1; */iSocketClient = accept(iSocketServer, (struct sockaddr *)&tSocketClientAddr, &iAddrLen);if (-1 != iSocketClient){iClientNum++;/* 支持多个客户端连接,每有一个就调用fork(),并创建一个子进程 */printf("Get connnect from NO.%d : %s\n", iClientNum, inet_ntoa(tSocketClientAddr.sin_addr));if (!fork()) /* 执行到fork()后马上复制一个代码完全一样的子进程*/{ /* 父进程走fork()=0;子进程走fork()!=0; *//*子进程的源码*/while (1){/* 接受客户端发来的数据并显示出来 */iRecvLen = iRecvLen = recv(iSocketClient, ucRecvBuf, 999, 0);if (iRecvLen <= 0) {close(iSocketClient); /* 一直接受客户端传来的消息 */return -1;}else {ucRecvBuf[iRecvLen] = '\0'; /* 加上结束符 */printf("Get Msg From client %d : %s\n", iClientNum, ucRecvBuf);}charup(ucRecvBuf); /* 字符串转大写字母函数 */iRecvLen = send(iSocketClient, ucRecvBuf, strlen(ucRecvBuf), 0);if(iRecvLen <= 0){close(iSocketClient);return -1;}} }}}
之后就是运行client的文件和serve的文件
当连接上后会显示如下所示:
网络编程 终端间的通讯相关推荐
- 网络协议与网络编程(双电脑串口通讯)
C.C++网络编程(双电脑串口通讯) 在阅读本文前.请确保先查看这篇文章,学习有关TCP网编与单电脑信息传输实践. 文章目录 C.C++网络编程(双电脑串口通讯) 1.让两台电脑连接同一个局域网 2. ...
- Linux环境下,网络编程基础概念(仅学习笔记)
网络编程 进程间通讯IPC各种手段,都是在同一台机器上. 不同计算机通过网络链接上进程相互通讯的机制:网络进程间通讯 network IPC 1)Internet的历史 Internet-" ...
- 网络编程入门从未如此简单(一):假如你来设计网络,会怎么做?
本文原题"如果让你来设计网络",有修订和改动,收录已征得作者同意,转载请联系作者.本文已同步发布于52im社区:http://www.52im.net/thread-3330-1- ...
- C# 网络编程之使用Socket类Send、Receive方法的同步通讯
经过几天学习,终于解决了再C#网络编程中使用Socket类Send和Receive方法开发的客户端和服务端的同步通讯程序:实现了又客户端想服务器发送消息的界面程序.主要使用的方法是: 1. ...
- Python30 网络编程通讯协议,1.学习网络编程的目的 2.什么是互联网 3.c/s结构 4.通讯基本要素 5.OSI模型...
今日内容: 网络通讯协议 1.学习网络编程的目的 2.什么是互联网 3.c/s结构 4.通讯基本要素 5.OSI模型 思维路线 目的是要链接互联网中的其他计算机 物理层 用物理介质链接其他计算机 数据 ...
- java web 进程通信_RMI网络编程开发之一 JAVA“进程间”通信方式
注意该标题是 "进程"间通信,而并非"线程"之间的通信. 线程之间的通信是多线程的讨论范畴.这里我们是要讨论分布式的独立的JAVA程序之间是怎么通信的.当然,大 ...
- linux网络编程(二)TCP通讯状态
linux网络编程(二)TCP通讯状态 TCP状态转换 为什么需要等待2MSL? 端口复用 TCP状态转换 tcp协议连接开始会经过三次握手,客户端和服务器开始都会处于CLOSED状态 第一次握手:客 ...
- 第三十三篇,网络编程TCP协议通讯过程实现和函数接口
网络编程知识点概览 ======================================== 1.核心知识点 传输层的两个重要协议 tcp协议: ...
- 网络编程-C/S、B/S结构、网络通讯
一.网络编程概述: 1.1 软件结构: C/S结构:全称为Client/Server结构.是指客户端和服务器结构.常见的程序有QQ.迅雷等软件. 缺点:开发周期长,维护成本高.因为有客户端和服务器端, ...
最新文章
- 关于图片上传的个人摘要
- android-数据库SQLite相关
- 【知识便利贴】ImageNet得的比Best Paper还牛的Longuet-Higgins奖是什么?
- ubuntu classicmenu-indicator
- 头条鼓励内容营销吗?创作商品营销内容会不会限制推荐?
- 数据太大?你该了解Hadoop分布式文件系统
- 高项论文(沟通管理)
- Casbin访问控制框架入门详解及Java案例示范
- 面向对象系列(四)-接口的特点
- Java课程设计——文本文件加密与解密软件设计与实现
- python小游戏毕设 俄罗斯方块小游戏设计与实现 (源码)
- 路由怎么变无线打印服务器,普通打印机如何变身无线打印?
- Gizmo for Linux 1.1.0.39
- 计算机网络实验路由器配置
- echarts5.0 去掉 hover 折线变粗方法
- 低比特量化之DoreFa-Net理论与实践
- 网络安全——文件包含漏洞
- 零成本“即用即走”的小程序,为什么没能留住用户
- 串行传输和并行传输有什么区别?
- js判断是否为数字 排除掉空
热门文章
- adb获取Android系统属性(adb shell getprop ***)数据来源
- PubSub订阅与发布
- Google Protocol Buffer(GPB)使用之完全解析一:没有GPB的日子怎么过?
- 汽车变速器与分动器的讲解(组图)
- svn------关于uuid不匹配的问题:svn: E170009: Repository UUID ‘102e...‘ doesn‘t match expected UUID ‘102e...‘
- 3.20 使用油漆桶工具给图像着色 [原创Ps教程]
- 员工为什么对绩效考核不满意?管理者应该怎么做?
- c语言期末总结1000,C语言期末考试总结,看完保你过.ppt
- ios 播放声音和震动
- UG NX 12 相交曲线