导航:首页 > 器材知识 > c如何访问外网设备进行通信

c如何访问外网设备进行通信

发布时间:2022-06-28 10:02:02

① 做一个C/S程序,客户端和服务器之间可以通过外网相互连接进行通信 遇到的问题是客户端如何获取本机的外网

最简单的就是在后台起个线程,访问http://www..com/s?wd=ip&rsv_spt=1&issp=1&rsv_bp=0&ie=utf-8&tn=home_pg&rsv_sug3=1&rsv_sug=0&rsv_sug1=1&rsv_sug4=40这个地址,然后把本机IP字段给截取下来就知道本机的外网地址了。

还有种方法就是客户端连接下服务器,服务器将客户端的地址传回客户端。

② C/S模式外网如何访问

端口问题,确定你这个软件需要用到的端口,检查接入设备和防火墙的端口设置。
其实这种方式是不安全的,还不如通过服务器系统再带的拨入做个简单的VPN,这样安全性相对要高一些。

③ Linux C语言编程如何跨公网进行通信

在C语言的网络编程中,公网及局域网是没有区别的,跨公网的通信是通过网络硬件设备(路由器、三层交换机),而不是通过软件实现的

④ C语言写的局域网聊天工具怎样应用到外网

看你的程序怎么写的,如果是使用TCP或者UDP侦听,指定IP地址进行链接,那是肯定没有问题的,什么环境都可以使用。

但是如果是使用广播方式发送消息,那就只能局域网使用,一般的路由器都会过滤广播。

补充:
只要不是依赖广播的就可以用,无需修改,依赖广播的修改为指定地址链接(一对一)。没看见你的程序,谁知道怎么修改。

⑤ 请问 C# 如何获取外网IP

本机是获取不到自己外网IP的,真的想要知道,你可以访问ip138这种网站,让这种网站获得你的IP再返回给你。有点儿像自己的眼睛是看不到自己长啥样,想要看得是镜子“获得”你的样子,然后再返还给你一样。

路由什么的是基于NAT的,根本不需要知道客户端的真实地址是什么,服务端地址固定住就好了。当客户端与服务端连接时(建立Sockets)经过路由,路由会NAT给客户端一个地址(包含IP和端口号两部分),服务端只需要往这个地址上发送信息,路由器识别你这个地址会自动转发给相应的真正的客户端的,这也就是路由的本身作用。

⑥ 请教怎么实现C/S模式上的远程访问

这个要看网络结构,server挂在外网,直接可以实现,若挂在内网,需在路由器做个端口映射;且有固定IP或域名

可以直接连服务器IP,当然,你需要打sp4补丁,开放1433端口等等,
如果要固定IP,可以弄个个花生壳的软件

⑦ 我用C#做了一个C/S结果的管理软件,服务器和客户端怎么在外网通信

我暑假的时候也遇到这样的问题,给一个公司做C/S管理软件,最终是这样解决的:在花生壳 注册了个动态域名,因为这个公司走的是ADSL网,你知道IP是不停地变的,然后在连接字符串的地方把IP换成域名。之后呢,在公司出口的路由上做了端口转发:将所有从外网的访问转发到局域网内的服务器的IP上(服务器局域网内IP已经固定),并且制定了转发给1433端口(SQLSERVER)。这样软件无论在外网还是内网都可以访问SQLSERVER了。有什么问题可以再交流,呵呵

⑧ 局域网如何访问外网

重新设置一下局域网,参照以下步骤:

1、工作组要相同。 具体操作: 右键 我的电脑 属性 计算机名 更改工作组。

2、禁用“GUEST”帐户。 具体操作:右键 我的电脑 管理 本地用户和组 双击用户 点 GUEST 右键 属性 账户已停用前勾上。

3、更改本地帐户的安全和共享模式为经典。具体操作:开始 设置 控制面板 性能和维护 管理工具 本地安全策略 安全选项 网络访问:本地账号的共享和安全模式 选 “经典:本地用户以自己的身份验证”。

4、若想实现文件和打印机共享,要开启各机的共享。

你试试,祝你成功!

彻底解决XP网上邻居共享
导致Windows XP网络邻居不能正确浏览或浏览列表不全的因素很多,解决问题需要对症下药,而诊断过程分两个步骤:测试基本连接、解决文件共享问题。

一、解决基本连接问题。

1、检查计算机之间的物理连接。

网卡是网络连接的基本设备,在桌面计算机中,每个网卡后面的指示灯应该是亮的,这表示连接是正常的。如果不亮,请检查集线器或交换机是打开的,而且每个客户端连接的指示灯都是亮的,这表示链接是正常的。接下来检查网线的水晶头是否接触良好。

2、确保所有计算机上都安装了 TCP/IP,并且工作正常。

在Windows XP 中默认安装了 TCP/IP。但是,如果出了网络问题想卸载后重新安装 TCP/IP 就不容易了:在“本地连接”属性中显示的此连接使用下列项目列表中单击 Internet 协议 (TCP/IP) 项,您将发现卸载按钮不可用(被禁用)。

这是因为传输控制协议/Internet 协议 (TCP/IP) 堆栈是 Microsoft XP/ 2003 的核心组件,不能删除。在这种情况下,如果需要重新安装 TCP/IP 以使 TCP/IP 堆栈恢复为原始状态。可以使用 NetShell 实用程序重置 TCP/IP 堆栈,使其恢复到初次安装操作系统时的状态。 方法是:在命令提示符后键入以下命令,然后按 ENTER 键:netsh int ip reset c:\resetlog.txt,其中,Resetlog.txt记录命令结果的日志文件,一定要指定,这里指定了 Resetlog.txt 日志文件及完整路径。运行此命令的结果与删除并重新安装 TCP/IP 协议的效果相同。

另外,不会还有人用95吧,WIN95默认情况下不自动安装TCP/IP协议。

3、检查IP地址

有几种情况:

查看不同的计算机的IP是否在同一范围内,方法是在MSDOS方式下输入IPCONFIG/ALL。如果一台计算机收到的地址在 192.168.0.x 范围内,而另一台收到的地址在 169.254.x.y 范围内,需要根据网络拓扑确定哪一个是正确的地址。然后,集中解决地址错误的那台计算机的问题。
关于169.254.x.y类IP地址
在不存在 Internet 连接的情况中,或者,每台计算机都有一个单独的 Internet 连接(拨号连接或宽带连接)。在这种配置中,计算机通常给自己分配 169.254.x.y 范围内的 IP 地址(其中 x 和 y 是 1 到 254 之间的数字)。而将 ISP 提供的地址用于 Internet 连接。
关于192.168.0.X类IP地址
一台计算机通过使用 Internet 连接共享连接到共享的Internet。该连接可以是拨号连接或宽带连接(一般是 xDSL 或电缆调制解调器)。该计算机也被称为代理服务器,常见的代理有SYGATE、WINGATE、NAT、ISA、CCPROXY等。通常是由代理服务器负责为家庭网络中的其他计算机分配 IP 地址。共享连接的计算机应该为连接到家庭网络的网卡配置 IP 地址 192.168.0.1。网络上其他计算机的地址应在 192.168.0.x 范围内(其中 x 是 2 到 254 之间的数字)。当然,可以在成功共享后修改IP地址,如10.X.Y.Z等。
计算机连接到集线器,并且集线器通过宽带连接与 Internet 连接。这种配置也称为无边界网络。在这种配置中,家庭网络中的每台计算机都有一个 Internet 服务提供商 (ISP) 提供的 IP 地址。使用的地址因 ISP 而异。无边界网络是一种特殊情况。在这种情况下应使用 ICF,但必须采取其他措施才能在家庭网络启用连接。
4、使用 ping 命令测试网络中两台计算机之间的连接:

ping 其它计算机IP,在命令提示处,键入 ping x.x.x.x(其中 x.x.x.x 是另一台计算机的 IP 地址),然后按 ENTER 键。应该可以看到来自另一台计算机的几个答复,如:

Reply from x.x.x.x:bytes=32 time<1ms TTL=128

如果没有看到这些答复,或者看到"Request timed out",说明本地计算机可能有问题。如果 ping 命令成功执行,那么您就确定了计算机可以正确连接,可以跳过下一步。如果没有看到这些答复,或者看到"Request timed out",说明本地计算机可能有问题。PING 本地IP,如果看到"Request timed out",说明本地计算机可能有问题。

5、 使用 ping 命令测试网络中名称解析是否正常

ping computername,其中 computername 是远程计算机的名称。通过 ping 命令用名称测试计算机连接。确定计算机的名称的方法是:在命令提示处,输入SYSTEMINFO。或者在桌面上右击我的电脑-属性,然后单击计算机名称选项卡。如果看到该命令的成功答复,说明您在计算机之间具有基本连接和名称解析。名称解析跟NETBIOS密切相关,看下面的步骤。

6、分析日志

检查"网络安装向导"日志文件中没有成功执行的任何步骤中的错误。打开该日志的方法是依次单击开始、运行,键入 %SystemRoot%\nsw.log,然后按 ENTER 键。 如果 Nsw.log 文件没有提供有关该问题的信息,请检查系统日志中的错误并查明错误原因。

二、解决文件和打印机共享问题

1、正确安装网络组件

首先右击网上邻居-属性,选择要共享的网卡。把IP设置在局域网的同一个网段上。比如192.168.0.X网段。然后看一下TCP/IP的高级属性中,是否开启NETBIOS 。在利用WINNT4.0 构建的网络系统中,对每一台主机的唯一标识信息是它的NetBIOS名,系统是利用WINS服务、信息广播方式及Lmhost文件等多种模式将NetBIOS名解析为相应IP地址,从而实现信息通讯。在内部网络系统中(也就是通常我们所说的局域网中),利用NetBIOS名实现信息通讯是非常方便、快捷的。但是在Internet上对一台主机的唯一标识信息是它的FQDN格式的域名(http://www.163.com/),在Internet是利用DNS标准来实现将域名解析为相应IP地址,WIN2K支持动态DNS,运行活动目录服务的机器可动态地更新DNS表。WIN2K网络中可以不再需要WINS服务,但是WIN2K仍然支持WINS,这是由于向后兼容的原因。目前,大多数网络是混合网,既有Win98等系统,又有WINXP/WIN2K等系统,因此需要在TCP/IP协议上捆绑NETBIOS解析计算机名。

查看是否选定“文件和打印服务”组件,如果已将其取消选中,“浏览服务”将不绑定到 NetBIOS 接口。成为备份浏览器并且没有启用“文件和打印共享”的基于 Windows 的计算机无法将浏览列表与客户机共享。任何将要包括在浏览列表中的计算机也都必须启用“文件和打印共享”。

2、启动"计算机浏览器"服务

计算机浏览器"服务在网络上维护一个计算机更新列表,并将此列表提供给指定为浏览器的计算机。如果停止了此服务,则既不更新也不维护该列表。

启动"计算机浏览器"服务

单击开始,右击我的电脑,然后单击管理。
在控制台树中,展开"服务和应用程序"。
单击服务。
在右边的详细信息窗格中,检查"计算机浏览器"服务是否已启动,右击计算机浏览器,然后单击启动。
关闭"计算机管理"窗口。

3、查看共享文件夹

请依次单击开始、运行,键入 fsmgmt.msc,然后单击确定。在左窗格中,单击共享。右窗格中随即出现共享文件夹列表。记下每台计算机的相应共享名称。

4、起用Guest(来宾)帐户

Windows XP的Guest帐户允许其他人使用你的电脑,但不允许他们访问特定的文件,也不允许他们安装软件。对 Windows XP Home Edition 计算机或工作组中的 Windows XP Professional 计算机的所有网络访问都使用来宾帐户。使用net user guest确保为网络访问设置了来宾帐户,如果该帐户是活动的,命令输出中会出现一行类似下面这样的内容:Account active Yes;如果该帐户不是活动的,请使用下面的命令授予来宾帐户网络访问:
net user guest /active:yes

5、允许Guest(来宾)帐号从网络上访问。

在运行里输入gpedit.msc,弹出组策略管理器,在‘计算机配置-Windows设置-本地策略-用户权利指派’中,有“拒绝从网络访问这台计算机”策略阻止从网络访问这台计算机,其中居然有GUEST帐号,谁能访问这台计算机。解决办法是删除拒绝访问中的GUEST帐号。如图

6、设置防火墙允许浏览服务

网络安全重要,所以最好开启网络防火墙,但是防火墙阻断正常的网络浏览服务通讯,结果是别人在网上邻居中看不到你的计算机,有没有两全其美的办法在开启防火墙的前提下允许浏览服务。办法是,如果开启了ICF,打开属性,在服务这栏,选择添加,添加服务的对话框共有四个编辑框,最上边是描述服务名称,以便于记忆,从上到下第二个是应用服务的IP地址或名称,输入127.0.0.1表示本机。下面连个是内外端口号,旁边的tcp/udp标示这个端口是udp连接还是tcp连接。

按照下面的表格输入3个服务

名 称 协 议 端 口
NetBIOS Name Service UDP 137
NetBIOS Datagram Service UDP 138
NetBIOS Session Service TCP 139

137/UDP -- NetBIOS 名称服务器, 网络基本输入/输出系统 (NetBIOS) 名称服务器 (NBNS) 协议是 TCP/IP 上的 NetBIOS (NetBT) 协议族的一部分,它在基于 NetBIOS 名称访问的网络上提供主机名和地址映射方法。
138/UDP -- NetBIOS 数据报,NetBIOS 数据报是 TCP/IP 上的 NetBIOS (NetBT) 协议族的一部分,它用于网络登录和浏览。
139/TCP -- NetBIOS 会话服务,NetBIOS 会话服务是 TCP/IP 上的 NetBIOS (NetBT) 协议族的一部分,它用于服务器消息块 (SMB)、文件共享和打印。

Windows XP 最新的SP2补丁对ICF做了很大的改进,功能更强大了,ICF有了自己的设置项,安装SP2后,默认情况下,启用ICF防火墙,不允许任何外部主动连接,即使是本地的应用程序要访问网络也需要在许可列表中做设置。

7、取消简单文件共享

Windows 2000 操作系统中用户在设置文件夹的共享属性时操作非常简便,只需用鼠标右击该文件夹并选择属性,就可以看到共享设置标签。而在 Windows XP 系统设置文件夹共享时则比较复杂,用户无法通过上述操作看到共享设置标签。具体的修改方法如下:打开"我的电脑"中的"工具",选择"文件夹属性",调出"查看"标签,在"高级设置"部分滚动至最底部将"Use simple file sharing (Recommended)"前面的选择取消,另外如果选项栏里还有"Mickey Mouse"项也将其选择取消。这样修改后用户就可以象使用Windows 2000一样对文件夹属性进行方便修改了。

对于 Windows XP Home Edition:
1.开机时按"F8"进入"带网络连接的安全模式"
2.登录后就可象在 Windows 其它版本中一样设置共享权限了。

8、设置帐号和密码

由于WinNT内核的操作系统,在访问远程计算机的时候,好像总是首先尝试用本地的当前用户名和密码来尝试,可能造成无法访问,在这里把用户密码添加进去就可以了。

9、多种方法访问“网络计算机”

例如要打开网络中名为“IBMZB”的计算机,其IP地址为10.41.221.5,如果你不清楚其它机器的IP地址,你可以使用“PING计算机名”来获得它的IP地址。

用计算机名访问,NETBIOS提供的服务。点击“开始”菜单,单击“运行”,在运行栏输入“\\IBM-ZB”,单击“确定”。
用IP地址访问,在运行输入栏中输入“\\10.41.221.5”,单击“确定”。
用搜索计算机的方法访问,计算机更新列表需要时间,搜索计算机可以加快更新列表。点击“网上邻居”右键中的“搜索计算机”,输入计算机名,点击“立即搜索”,就可以看到你要访问的计算机。直接双击右边计算机名就可以打开它了。
用映射驱动器的方法访问,进入MS-DOS方式,输入“NET VIEW \\IBMZB”,回车�这是查看计算机IBMZB上有哪些共享文件夹,如D。再输入NET USE Z:\\IBMZB\D�将计算机IBM-ZB共享的文件夹D映射为H:盘,在命令提示符下键入“Z:”。你会发现你已经连到IBMZB计算机上了。

⑨ 如何从外部访问路由器下的设备

做端口映射。一般在防火墙部分。把80端口直接映射到192.168.1.101上。或者,直接找到DMZ选项,把192.168.1.101设为DMZ地址,外网就可以直接访问了。

⑩ C# TCP/IP中的客户端和服务器在局域网或外网怎么通信呀谁有完整的例子呀.

这是我以前在学校的时候做的一个c/s系统里面的类似qq聊天工具
你看看。。
这是客服端的代码:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net;
using System.Net.Sockets;

namespace demo2
{
public partial class frmTouchWe : Form
{
Thread a;
//发送IP跟端口
private UdpClient udp = new UdpClient("127.0.0.1",9000);
//接收端口
private UdpClient udpSend = new UdpClient(8000);
private IPEndPoint ip = new IPEndPoint(IPAddress.Any,0);
public frmTouchWe()
{
InitializeComponent();
Form. = false;
}

private void frmTouchWe_Load(object sender, EventArgs e)
{ //定义线程开始
a = new Thread(new ThreadStart(Run));
a.Start(); }

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
//客服接收信息。弹出窗体
frmAnswerInfo answerInfo = new frmAnswerInfo();
answerInfo.Show(); }

private void button1_Click(object sender, EventArgs e)
{
//在自己的信息栏中显示自己的信息
lsbInfo.Items.Add(txtInfo.Text);
//用户信息内容
string Mes = txtInfo.Text;
//用户信息
string mes = "用户:"+Program.user.id+"("+Program.user.name+")"+" " + time;
//转换成字节
byte[] b = UTF8Encoding.UTF8.GetBytes(Mes);
byte[] bb = UTF32Encoding.UTF8.GetBytes(mes);
//发送信息
udp.Send(bb, bb.Length);
udp.Send(b, b.Length);
txtInfo.Text = "";
}
//循环接受客服发来的信息
private void Run()
{
while (true)
{
byte[] b = udpSend.Receive(ref ip);
string mes = UTF8Encoding.UTF8.GetString(b);
lsbInfo.Items.Add(mes);
}
}

private void button2_Click(object sender, EventArgs e)
{
this.Close();
}

private void button3_Click_1(object sender, EventArgs e)
{
//清空所有项
lsbInfo.Items.Clear();
}
}
}

下面是服务器端的代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
using System.Net;
using System.Net.Sockets;

namespace demo2
{
public partial class frmAnswerInfo : Form
{
//定义一条线程,用来循环接收客户发来的信息
Thread a;
//定义另一条线程,用来升起窗体
Thread b;
//发送到信息的地址
private UdpClient udpSend = new UdpClient("127.0.0.1",8000);
//接收端口
private UdpClient udp = new UdpClient(9000);
private IPEndPoint ip = new IPEndPoint(IPAddress.Any,0);
public frmAnswerInfo()
{
InitializeComponent();
Form. = false;
}
//循环接收信息
private void Run()
{
while (true)
{
byte[] b = udp.Receive(ref ip);
string mes = UTF8Encoding.UTF8.GetString(b);
lsbInfo.Items.Add(mes);
}
}

private void frmAnswerInfo_Load(object sender, EventArgs e)
{
//设置窗体的位置属性(窗体加载时候慢慢从右下角升上来~类似qq广告~~)
this.Top = Screen.PrimaryScreen.WorkingArea.Height;
this.Left = Screen.PrimaryScreen.WorkingArea.Width - this.Width;
//设置窗体的名字
a = new Thread(new ThreadStart(Run));

b = new Thread(new ThreadStart(run));
//开始线程
a.Start();
b.Start();
}
//用户点击谈话时显示该窗体
private void run()
{
while (true)
{
this.Top = this.Top - 10;
Thread.Sleep(100);
if (Screen.PrimaryScreen.WorkingArea.Height - this.Height >= this.Top)
{
break;
}
}
}
//发送按钮编码
private void button1_Click(object sender, EventArgs e)
{
//获取当前时间
DateTime time = DateTime.Now;
//在自己的信息栏中显示自己发出去的信息
lsbInfo.Items.Add("在线客服:"+time);
lsbInfo.Items.Add(txtInfo.Text);

//在客户端显示自己的信息标题
string mes = "在线客服:"+time;
//信息内容
string Mes = txtInfo.Text;
//发送信息标题
byte[] b = UTF8Encoding.UTF8.GetBytes(mes);
//发送信息内容
byte[] bb = UTF8Encoding.UTF8.GetBytes(Mes);
udpSend.Send(b, b.Length);
udpSend.Send(bb,bb.Length);
txtInfo.Text = "";
}

private void button2_Click(object sender, EventArgs e)
{
this.Close();
}

private void button3_Click(object sender, EventArgs e)
{
//清除所有项
lsbInfo.Items.Clear();
}
}
}

这个可以跑的。。我以前就用过的。

阅读全文

与c如何访问外网设备进行通信相关的资料

热点内容
steam令牌换设备了怎么办 浏览:246
新生测听力仪器怎么看结果 浏览:224
化学试验排水集气法的实验装置 浏览:156
家用水泵轴承位置漏水怎么回事 浏览:131
羊水镜设备多少钱一台 浏览:125
机械制图里型钢如何表示 浏览:19
测定空气中氧气含量实验装置如图所示 浏览:718
超声波换能器等级怎么分 浏览:800
3万轴承是什么意思 浏览:110
鑫旺五金制品厂 浏览:861
苏州四通阀制冷配件一般加多少 浏览:153
江北全套健身器材哪里有 浏览:106
水表阀门不开怎么办 浏览:109
花冠仪表盘怎么显示时速 浏览:106
洗砂机多少钱一台18沃力机械 浏览:489
超声波碎石用什么材料 浏览:607
组装实验室制取二氧化碳的简易装置的方法 浏览:165
怎么知道天然气充不了阀门关闭 浏览:902
公司卖旧设备挂什么科目 浏览:544
尚叶五金机电 浏览:59