c++如何让两个Tcp客户端通过服务器 连接后相互通信?

c++如何让两个Tcp客户端通过服务器 连接后相互通信?,第1张

服务器上要开发一个TCP服务端,功能是维护在线客户端列表、处理客户端(假设为客户1)连接请求,将客户1的请求推送到客户2,根据客户2 的响应决定是不是在客户1和2之间建立应用连接,一旦应用连接建立,服务端就持续交换转发客户1、2的数据,直到其中一方断开,这是所有数据都通过服务器中转的方式;还有一种方式服务端仅仅维护在线用户列表,客户端相互直接连接,数据不通过服务器中转,具体实现还有许多细节需要处理,希望能够帮到你。

根据你说的
不知道你的网络情况
如果是在同一个局域网内的话就很简单
用socket保持长连接就行,如果不在同一个局域网内,就要考虑网络情况,如果你的模拟器所在的pc不在公网上,就要做端口映射,在公网上,就和局域网是一样的,用socket保持连接

在发出将建立通信会话的第一个数据包之前,发送方主机上的 TCP/IP 协议执行以下四个不同的步骤:
1TCP/IP 将主机名或 NetBIOS 名称解析为 IP 地址
2使用目标 IP 地址和 IP 路由表,TCP/IP 确定要使用的接口和下一跃点 IP 地址。
3对于共享访问技术(例如,以太网、令牌环和分布式光纤数据接口 (FDDI))上的单播 IP 流量,地址解析协议 (ARP) 将下一跃点 IP 地址解析为媒体访问控制 (MAC) 地址(也称为数据链接层地址)。
对于以太网和 FDDI 上的多播 IP 流量,目标多播 IP 地址会被映射到相应的多播 MAC 地址。对于令牌环上的多播 IP 流量,使用功能地址 0xC0-00-00-04-00-00。对于共享访问技术上的广播流量,MAC 地址会被映射到 0xFF-FF-FF-FF-FF-FF。
4之后,IP 数据报会被发送到通过 ARP 解析的 MAC 地址、多播映射或 MAC 级广播地址。
网络访问要通过不同的协议进行,各种协议要通过不同的端口进行访问,如25端口是邮件端口,3389超级终端(就是木马程序最想打开的端口),8000=腾讯OICQ服务器端等等很多很多,记住常用的几个就可以了。

你这里所说的服务器是域名服务器,也就是我们常说的DNS服务器,通常DNS服务器解析不到IP地址,也就不能给你的网络分配一个网络地址,导致网络无法连接或不稳定而不能正常上网。通常DNS服务器都是根据你的网络自动生成的,这个可以询问你的网络营运商或直接把DNS服务器地址设置成自动获取,让网络自行分配。

电脑主机在不考虑稳定性的前提下是可以用做服务器。
1在电脑主机上安装“IIS”可以实现WEB服务器的功能。
2IIS(Internet Information Server,互联网信息服务)是一种Web(网页)服务组件,其中包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面,它使得在网络(包括互联网和局域网)上发布信息成了一件很容易的事。
3IIS是Windows中的软件。Win2k/2k3/xp (XP家庭版没有IIS)都可以在“控制面板→添加/删除程序→添加/删除Windows组件→Internet信息服务(IIS)”前的小钩去掉(如有),重新勾选中后按提示 *** 作即可完成IIS组件的添加。用这种方法添加的IIS组件中将包括Web、FTP、NNTP和SMTP等全部四项服务。
4 有了IIS意味着能发布网页,并且有ASP(Active Server Pages)、JAVA、VBscript产生页面,有着一些扩展功能。IIS支持一些有趣的东西,象有编辑环境的界面(FRONTPAGE)、有全文检索功能的(INDEX SERVER)、有多媒体功能的(NET SHOW)
没有最低配置,以提供服务的资源或程序需要为准。
一、安装IIS
从桌面打开“我的电脑“,进入后打开“控制面板“,好,这时找到“添加/删除程序“,进行双击;在d出的窗口中,单击“添加/删除Windows组件“,等待,会
d出一个窗口,这里可以进行选择,看要安装什么组件。
也就是在这一个名称前面的四角框打上勾;(当然,也可以对“Internet信息服务(IIS)“这一条进行双击,这时就会d一个窗口,里面又可以进行选择,看哪些不需要安装都可以去掉勾。)
选好了以后,单击“下一步“,这时就会d出一个进度条,安装过程中会提示插入跟当前所用的系统版本相对应的系统安装盘;例如:系统是XP,那就插入XP系统安装盘;
2000就插入2000系统安装盘。建议用2000server的的系统做服务器会比较稳定,而且人数访问限制可以自由设置。放入光盘后,单击确定。完成后,开始设置IIS。
二、设置IIS
也是打开“控制面板”--->然后打开“管理工具”--->这时找到刚安装的“Internet 服务管理器“,双击;看到的是“Internet信息服务“窗口,
这时对,左窗口的“Internet信息服务”文字下边的“电脑的计算机名旁的+号进行单击,d出下一级目录,现在只要做网站服务器,其它功能不需要,都把它停止运行,
免得被人攻击,如:”默认FTP站点“,现在不需要,对该项进行右击选”停止“。看到的都照这个步骤弄”停止“服务,只留一个”默认web站点”为”启动“状态。
接下来开始设置站点吧。对“默认web站点”右击,选择”属性“,d击一个名为”默认web站点属性”的窗口,要设的第一个“Web站点“:
详细设置列表:
Web 站点标识
说明: 默认Web站点
IP 地址: (全部未分配)
TCP 端口: 80 (填80)
连接
无限 (不限制访问人数,就单击前边的圆圈)
限制到 (要限制访问人数,就单击前边的圆圈和输入限制连接的人数)
连接超时:30(秒)
启用保持 >1 安装DHCP:rpm –ivh dhcp-20pl5-8i386rpm
2 配置服务器:
l 为服务器自身设置静态IP地址。编辑/etc/sysconfig/network-scripts目录下脚本文件ifcfg-eth0,内容形式如下:
DEVICE=”eth0”
IPADDR=”192168xx10”
NETMASK=“2552552550”
ONBOOT =”yes”
BOOTPROTO=”none”
l 编辑/etc/sysconfig/network文件,内容如下:
NETWORKING=yes
HOSTNAME=”dhcpserverncieorg”
GATEWAY=”192168xx254”
GATEWAYDEV=”eth0”
l 启动TCP/IP网络:service network restart
l 为广播地址设置主机名称为dhcp。在/etc/hosts文件中加入如下一行:
255.255.255.255 dhcp
l 把广播地址加入路由表:route add –host dhcp dev eth0
l 编辑/etc/dhcpdconf文件,内容如下:
subnet 192168xx0 netmask 2552552550
default-lease-time 86400;
max-lease-time 259200;
option routers 192168xx254;
option subnet-mask 2552552550;
option domain-name “ncieorg”;
option domain-name-servers 19216801;
{
range 192168xx101 192168xx200;
}
l 建立租约数据库文件:touch /var/lib/dhcp/dhcpdleases
l 启动dhcp服务器:service dhcpd start
l 检测dhcp服务器是否启动正常: netstat -utl
3 配置客户端:
l 登录到局域网中的一台Linux客户机,检测客户机上是否安装有DHCP客户端软件dhcpcd,如果没有则安装该软件包。
l 配置客户机使用DHCP获取网络参数。编辑/etc/sysconfig/network-scripts下的ifcfg-eth0文件,内容形式如下:
DEVICE=”eth0”
ONBOOT=”yes”
BOOTPROTO=”dhcp”
l 启动网络接口eth0: ifup eth0
l 利用ifconfig命令查看一下客户机的网络接口启动状况,确认网络接口已经被启动。
任务二 配置DHCP中继代理
实验要求:
配置DHCP服务器和中继代理,使子网A内的DHCP服务器能够同时为子网A和子网B提供DHCP服务。为子网A内的客户机分配的网络参数同上,为子网B内的主机分配的网络参数如下:
l IP地址段:19216810101-19216810200
l 子网掩码:2552552550
l 网关地址:19216810254
l 域名服务器:19216805
l 子网所属域的名称:ncieorg
l 默认租约有效期:1天
l 最大租约有效期:3天
实验步骤:
l 配置DHCP中继代理
1 登录到子网A和子网B的路由器,安装DHCP服务器端软件包。
2 启动DHCP中继代理: dhcprelay –I eth2 192168xx10(其中eth2连接B子网,192168xx10是子网A内的DHCP服务器的IP地址。在实验中视具体情况而定。)
3 用netstat命令检测中继代理是否成功启动,以及监听的网络接口是否是连接子网B的网络接口:netstat –utl|grep bootps
l 配置DHCP服务器
1 编辑DHCP服务器/etc目录下的dhcpdconf文件,内容形式如下:
share-network ncieorg{
default-lease-time 86400;
max-lease-time 259200;
option domain-name “ncieorg”
subnet 192168xx0 netmask 2552552550{
option routers 192168xx254;
option subnet-mask 2552552550;
option domain-name-servers 19216801
range 192168xx101 192168xx200;
}
subnet 192168100 netmask 2552552550{
option routers 19216810254;
option subnet-mask 2552552550;
option domain-name-servers 19216805
range 19216810100 19216810200;
}
}
2 重新启动DHCP服务: service dhcpd restart
l 客户端配置与检测
1 配置子网B内的客户机使用DHCP服务器获取网络参数,步骤和配置子网A的客户机相同。
2 查看网络B内的客户机上/etc/dhcpcd目录下的dhcpcd-eth0info文件,检测所作的配置。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13458900.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-11
下一篇 2023-08-11

发表评论

登录后才能评论

评论列表(0条)

保存