社区
网络编程
帖子详情
问一个有关socket中指定IP地址的问题
halo126
2010-05-17 04:35:38
服务器端bind的是本机IP
客户端connect的是服务器的IP
想问一下这两个IP都是广域网上的IP吗?
如果客户端在局域网内,服务器在广域网内,IP应该怎么设?
像qq那样的C/S系统,IP是怎么设的?
因为我发现局域网内既有局域网内的IP,也有广域网内的IP,这两个什么关系?初学!搞不清!望大虾指点!
...全文
649
18
打赏
收藏
问一个有关socket中指定IP地址的问题
服务器端bind的是本机IP 客户端connect的是服务器的IP 想问一下这两个IP都是广域网上的IP吗? 如果客户端在局域网内,服务器在广域网内,IP应该怎么设? 像qq那样的C/S系统,IP是怎么设的? 因为我发现局域网内既有局域网内的IP,也有广域网内的IP,这两个什么关系?初学!搞不清!望大虾指点!
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
18 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
turtle_2
2012-02-14
打赏
举报
回复
好文,太感谢各位了!
TRUE
2010-05-18
打赏
举报
回复
1、2个都在内网,ok,只要ping的通,链接没有问题,你只要指定链接的IP和端口即可
2、2个都在公网,也没有问题,只要IP地址互通,就没有问题,和内网一样
3、客户端在内网,服务器在公网,这样也没有问题,直接链接即可
4、客户端在公网,服务器在内网,你需要使用端口映射等来把端口和你的内网的IP进行绑定,路由器或者一些防火墙都可以实现,但是这个路由器或者防火墙需要公网IP。然后你对这个公网的IP和端口的链接都可以映射到你的内网的服务器上。当然这个时候的IP地址和端口不是你的真实的内网的机器的端口和IP,而是你的路由器或者防火墙的IP和端口。不知道明白吗
Eleven
2010-05-17
打赏
举报
回复
贴一个:
内网:就象你小时候,什么事都有爸妈顶这,爸妈做主,都要通过爸妈。没有身份证。
外网:就象你张大了,什么事都可以自己做主了。有身份证了,要自己承担法律责任了。
------------------------------------------------
内网也就是局域网,最直观的就是像网吧,公司内部的电脑用交换机,HUB,路由连起来的。再通过光钎。猫接入INTERNET的。
外网就像你家里的一台电脑。用猫拨号上的,有个外部IP的。
----------------------------------------------------------------
什么是内网、公网
内网、公网是两种Internet的接入方式。
内网接入方式:上网的计算机得到的IP地址是Inetnet上的保留地址,保留地址有如下3种形式:
10.x.x.x
172.16.x.x至172.31.x.x
192.168.x.x
内网的计算机以NAT(网络地址转换)协议,通过一个公共的网关访问Internet。
内网的计算机可向Internet上的其他计算机发送连接请求,但Internet上其他的计算机无法向内网的计算机发送连接请求。
公网接入方式:上网的计算机得到的IP地址是Inetnet上的非保留地址。公网的计算机和Internet上的其他计算机可随意互相访问。
向立天
2010-05-17
打赏
举报
回复
[Quote=引用 14 楼 sjdev 的回复:]
坐看黑暗伯爵,(*^__^*) 嘻嘻……。
[/Quote]
呵呵
sjdev
2010-05-17
打赏
举报
回复
坐看
黑暗伯爵
,(*^__^*) 嘻嘻……。
快乐鹦鹉
2010-05-17
打赏
举报
回复
[Quote=引用 12 楼 halo126 的回复:]
具体怎么实现啊?有代码看看嘛?
想不出怎么实现
[/Quote]
你要实现什么啊?说了这些和你的程序没有关系。通信程序不需要关心这些。正如不需要关心底层的通信协议一样,对你来说都是透明的,也不是用编码来实现的。
halo126
2010-05-17
打赏
举报
回复
具体怎么实现啊?有代码看看嘛?
想不出怎么实现
sanguomi
2010-05-17
打赏
举报
回复
如果你是那种几十万的客户端软件,你都去做端口映射??
快乐鹦鹉
2010-05-17
打赏
举报
回复
端口映射实现方式也不管你是,对程序来说也是透明的。
上面已经说了,确定服务器端是否可以连通,只需要在客户端ping ip地址就行嘞
halo126
2010-05-17
打赏
举报
回复
楼上
我只要知道端口映射实现方法就可以了?
快乐鹦鹉
2010-05-17
打赏
举报
回复
NAT穿透不是你程序解决的事情,这个不需要关心。
你理解的不大对,NAT穿透对你的通信程序来说是透明的。你只需关心能够访问到服务器的IP地址,即可确认是否可以通信。
如果你的服务器是局域网中的一台计算机,那么在网络服务器上也可以用端口映射的方法将这台服务器让外部的计算机能够访问到。
halo126
2010-05-17
打赏
举报
回复
happyparrot:是这样吗?
可以直接写入IP的情况:
客户端和服务器端在同一局域网内、服务器端在广域网内(包括客户端在局域网和客户端在广域网)
直接bind不支持,需要做NAT穿透:
客户端和服务器端在两个局域网内、客户端在广域网服务器在局域网
halo126
2010-05-17
打赏
举报
回复
NAT穿透看什么材料比较好?
搜了一下都感觉很抽象
GeorgeSoros
2010-05-17
打赏
举报
回复
不好意思了,没积分了
sanguomi
2010-05-17
打赏
举报
回复
都不是公网IP,都是局域网IP
要连接公网 要做NAT穿透,首先都必须内网去连接公网IP,NAT会给你分配IP和PORT,然后看不同的NAT类型,有的服务端收到后,可以回包过来,有的不行
QQ那样的,都需要服务端做中端,有可能有几层在做中转,
快乐鹦鹉
2010-05-17
打赏
举报
回复
局域网中不是所有机器都有外网IP,也只有服务器有。其它机器都是内网IP,通过服务器上网。
如果客户端在局域网内,服务器在广域网内,IP应该怎么设?
==只要服务器在广域网就够了。然后客户端局域网能够连接广域网即可(也就是所谓的上网)
尹成
2010-05-17
打赏
举报
回复
要通信就必须要有公网IP和端口,有下面几个方法
其中一台的局域网路由器做一个端口映射,相当于一台机器开放一个公网IP下的端口。
思路如下:
A->B打洞过程:
说明:
A:用户A
B:用户B
NA:NAT网络A
NB:NAT网络B
Server C为外网的机器(服务器或消息中转站)
A想与B建立通信通道,A to B打洞:
1.A ---> NA ---> Server C ---> NB ---> B
2.B---->A (打洞完成)
1,如果A想与B通信;
2,A首先连接 C, C得到A的外网NA的地址和端口;
3,B也要连接C,C得到B的外网NB的地址和端口;
4,A告诉C说我要和B通讯;
5,C通过NB发信息给B,告诉B A的外网NA的地址和端口;
6,B向NA发数据包(肯定会被NA丢弃,因为NA上并没有 A->NB 的合法session),
但是NB上就建立了有B->NA的合法session了;
7,B发数据包给C,让 C 通知 A,我已经把洞打好了;
8,A接受到通知后向 B 的外网发NB数据包,这样就不会被丢弃掉了。因为对于NB来说,它看到的是A的外网NA的地址,
而通过第6步,B已经让NA成为NB的合法通信对象了。所以当NA发数据包给NB时,NB就会接收并转发给B;
快乐鹦鹉
2010-05-17
打赏
举报
回复
首先QQ公司有服务器,在公网有IP地址,那么每个客户端都连这个IP地址,然后服务端再帮你接通目的客户端就可以了。
socket
bind IP之最好解释
若
socket
bind IP为ANY_IP,则
socket
的发送IP不作限制,接收IP也不作限制(可以接收到目的地址为任意IP的数据) 若
socket
bind
指定
IP,则
socket
发送数据的源地址为该
指定
IP,若本机该IP不存在了,数据就不能从此
socket
发出了。同时
socket
只能接收到目的地址设为该IP的数据。
socket
.send里面填入的目标IP若为127.0.0.1,表示该...
Socket
Server
指定
监听端口和IP
Socket
Server
指定
监听端口和IP TCP/IP进行网络编程时,会用到
socket
相关函数,各个函数的详细介绍在这里: https://www.cnblogs.com/liedElxa/p/10795398.html 需求描述 考虑到一种场景,在
一个
多网卡的服务器上,比如有10.0.0.1、10.0.0.2、10.0.0.3三个网卡都在使用,我们想做
一个
监听8080号端口的服务器...
安卓开发之
socket
的
IP地址
1、
IP地址
获取
socket
.getInetAddress():本客户端的
IP地址
返回:/192.168.1.108
socket
.getLocalAddress():本服务器的
IP地址
返回:/192.168.1.111
socket
.getLocal
Socket
Address():本服务器的
IP地址
+...
Python
socket
获取本机
IP地址
import
socket
def get_host_ip(): """ 查询本机
ip地址
:return: ip """ try: s=
socket
.
socket
(
socket
.AF_INET,
socket
.SOCK_DGRAM) s.connect(('8.8.8.8',80)) ip=s.getsockname()[0] finally: s.close() return ip i
计网 | C语言
Socket
编程获取本机IP及
指定
域名IP
实验目的和要求 使用Winsock提供的API函数 ,利用
Socket
获得本机IP和本机名称。 使用Winsock提供的API函数 ,利用
Socket
获得百度域名的IP 。 结果预览 环境记录 名称 值 操作系统 Windows 11 家庭
中
文版22H2 内存 16GB CPU Intel® Core™ i7-8750H CPU @ 2.20GHz 2.20 GHz IDE DEV-C++ 5.10 目录 实验记录 配置IDE 需要注意的是引用winsock2.h
网络编程
18,356
社区成员
64,214
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章