最后更新:2022-04-04 14:15:37 手机定位技术交流文章
目录
一、前言
二、网络编程三要素
1、IP地址
1)IP地址概念
(2) IP IP 以地址为基础进入持发委网络的地址
(3) 当地返回环的IP地址
2、端口号
3、通信协议
1)通信协议概念
2)TCP和UDP
三. 网络方案拟订的基本内容
1、编程流程
2、建立本地服务器
1 1) 使用套接字() 的Network 初始化
(2) 方法约束()
Listenten () 是一个监听功能 。
4) 方法接受()
5)服务器全部代码
3、建立客户端
4. 客户-服务器连接测试
一、前言
此篇文章讨论网络程序的基本内容, 以及如何使用视觉工作室 2019 在当地在 Linux 建一个服务器, 连接客户端到服务器, 通过客户端发送信件到服务器, 测试服务器能否接收信息 。
在我们开始编程之前, 让我们来回顾一些基本要点。
二、网络编程三要素
以下三点包括网络方案拟订的三个方面:
1. IP地址:确定一台机器在网络上的位置。
使用端口号确定单个程序。
3. 通信协议:来文之间的协议和补充条款
1、IP地址
1)IP地址概念
IP地址用于识别不同类型的计算机设备,而其他人的计算机只有在知道他人设备IP地址的情况下才能识别。
IP 地址类似于我们的居住地址 。 如果您想要给某人写信, 您必须知道他或她的地址, 以便邮递员能够发送 。 计算机发送信息的方式与“ 邮递员” 相同, 它必须知道唯一的“ 家庭地址 ”, 以避免发送给不正确的人 。
(2) IP IP 以地址为基础进入持发委网络的地址
例如,Csdn网站是ww.csdn.com。请接受我的道歉,csdn。
Win+r 打开运行框, 输入 cmD, 返回汽车 。
抱歉,Csdn,这篇文章是2011年叙利亚抗争特别报导的一部分。
浏览器输入和与CSDN官方网络的连接
在域名下 我们可以找到IP地址在持发委官方网络中,浏览器也可以达到该IP地址。实际上,域名和IP地址是一对至关重要的夫妇。是唯一的。如果在访问CSDN网络时输入IP地址不方便,则在有IP地址时输入该地址不方便。因此,出现了域名。使用域名访问更为方便。
(3) 当地返回环的IP地址
本地服务器的 IP 地址可指定为
127.0.0.1,它通常被称为本地环路地址( Loopback 地址)。不适用于任何地址类别 。这是一个装置的本地虚拟界面。因此,它被视为永无止境的接口。Windows操作系统也有类似的定义。因此,在安装网络卡之前,通常您可以使用这个本地的回环地址。
2、端口号
如果您只能在某个机器上识别IP地址, 您需要知道端口号码才能找到应用程序 。
简单地说,港口号是确定操作程序,用来区分各种应用。
3、通信协议
1)通信协议概念
通信还需要达成沟通协议,如统一语言普通话,以便利对话。
通信协议具体规定了双方为完成其通信或服务必须遵守的规则和协议。还利用不同地理区域的数据通讯系统通过通讯路线和设备相互通讯。允许它们合作交流信息和资源分享,他们必须以共同语言进行交流。它涉及沟通什么、如何、何时和何时。必须遵守相互商定的规范。这项规则是通信合同。
2)TCP和UDP
TCP和UDP是成熟的通信协议,而其他协议之前是TCP或UDP。
让我们审查这两项协定之间的差异。
TCP UDP
您需要连接吗? 要发送信件, 您必须有一个连接。 您不需要连接 。
流流 IO(二元数据)转移介质
转让限制、大量数据传输和一次64千兆B传输都是可能的。
概括地说,以效率为代价,加强传输安全,加强不可靠的协议,牺牲部分安全,提高传输效率和不可靠的协议。
以下图像描绘了OSI参考模型和TCP/IP参考模型。
然后使用 TCP 协议代码连接服务器到客户端 。
话不多说
三. 网络方案拟订的基本内容
1、编程流程
下图描述了以流动为基础的方案拟订方法。
2、建立本地服务器
1 1) 使用套接字() 的Network 初始化
int socketfd = 0;
/ 网络初始化参数一:IPv4参数二的使用:流体转移
socketfd = socket(AF_INET, SOCK_STREAM, 0);
Socket () 初始化网络并返回文件配置文件 。
函数原型:
int socket(int domain, int type, int protocol);
返回值:
成功返回文件文件配置程序
失败:返回 -1
第一个论点是AF_INET,它代表 IPv4 地址。
第二个论点,SOCK_STREAM,是一个流式配置。
第三个参数为0即可
(2) 方法约束()
将 IP 地址绑在端口号上,并将连接协议设置为 IPv4 。
12 最初使用的是Sruct sockaddr,但袜子交换器通常比较方便;两种数据类型相同,可以相互转换。
struct sockaddr_in s_addr;
; 决定使用哪些 Ipv4 顾问
s_addr.sin_family = AF_INET;
// 自动系统访问本地IP地址:
s_addr.sin_addr.s_addr = INADDR_ANY;
操作系统本身使用一台计算机,拥有65 535台计算机和10 00台以下的计算机,在10 00台之后有自定义的端口号码。
请接受我的道歉。 s_addr.sin_port = htons (12345); // 自定义端口编号 12345
len = sizeof(s_addr);
/ 一起加入 IP 地址和端口号 。
int res = bind(socketfd, (struct sockaddr *)&s_addr, len);
if (res == -1)
{
perror(“bind error”);
}
函数原型:
int bind(int sockfd, const struct sockaddr *addr, socklen_t addrlen);
返回值:
成功:返回 0
失败:返回 -1
第一个参数, 文件描述符, 返回前一步 。
第二个参数作为支架袜子结构更容易执行。
结构结构的大小是第三个参数 。
Listenten () 是一个监听功能 。
你有窃听的目标吗?
/ 检查此地址是否通过客户端连接到端口。 只要第二个参数大于零, 它就不再有效 。
if (listen(socketfd, 2) == -1)
{
perror(“listen error”);
}
函数原型:
int listen(int sockfd, int backlog);
返回值:
成功:返回 0
失败:返回 -1
第一个参数是先前收到的服务器文件描述 。
第二个参数只要 >0 即可
4) 方法接受()
等待客户上网, 封锁一个功能, 并且只允许客户上线。
服务器在网络上维持了一段时间(1个死循环),客户一旦上网,将打开一个子程序,在子程序期间读取客户发来的信息。父程序继续等待下一个客户上网。
注:
读() 方法也是一种阻塞函数 。
/ 死亡周期保证服务器现已投入运行。
while (1)
{
cout << “等待客户端上线” << endl;
/ / 在等待客户连接时, 使用已接受的阻塞功能fd, 即已接受是已连接客户端fd 。
acceptfd = accept(socketfd, NULL, NULL);
cout << "客户端上线 fd = " << acceptfd << endl;
pid = fork();
如果 (pid = 0), 子进程将无限期地读取客户端的信息 。
{
while (1)
{
read(acceptfd, buf, sizeof(buf));
cout << "pid = " << getpid() << " 说: " << buf << endl;
bzero(buf, sizeof(buf));
}
}
}
函数原型:
int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
返回值:
返回客户档案档案档案是成功的。
失败:返回 -1
第一个参数是先前收到的服务器文件描述 。
第二和第三个参数可以留空。
5)服务器全部代码
#include
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
using namespace std;
int main()
{
}
3、建立客户端
要发现 IPv4 通讯协议, 只要创建套接字 () 网络, 并在客户端绑定 ip 地址和端口号 。
#include
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
using namespace std;
int main()
{
int socketfd = 0;
int acceptfd = 0;
int len = 0;
char buf[255] = { 0 };
//初始化网络
socketfd = socket(AF_INET, SOCK_STREAM, 0);
if (socketfd == -1)
{
perror(“socket error”);
}
else
{
struct sockaddr_in s_addr;
; 决定使用哪些 Ipv4 顾问
s_addr.sin_family = AF_INET;
}
注:
1. 由于IP地址是本地客户和本地服务器,所以IP地址是本地返回地址。
2. 约束端口编号和通信协议必须与服务器使用的相同。
服务器在函数 3 中提供了文件描述, 写入 () 。
4. 客户-服务器连接测试
在 linux.cpp 中发现了等效的主体, 由 g++ 构建, 并执行 。
注:
1. 如果代码发生变化,就必须重建解决方案,代码可以同步到linux水平以下。
2. 首先启动服务器,然后是客户。
测试结果
对不起,Csdn。 这个项目是我们特别报导叙利亚抗争活动的一部分。 2011 net/wmcy123/article/ details/12372635。
本文由 在线网速测试 整理编辑,转载请注明出处。