必须能啊,无论是 TCP 还是 UDP,都是基于最基本的 Socket 通信的。
你都建立连接了,就一定有 Socket 了呀。在服务端 *** 作这个 Socket 不就能得到各种信息了么?C# 里 Socket 已经封装的很好了,有属性 RemoteEndPoint 就是来源节点呀。这个属性是个 EndPoint 类型的成员,强转成 IPEndPoint 类型,就有 Address 这个属性了,就包含了这个 Socket 中远程主机的 IP 了。
1、利用IP代理池技术,每次从IP代理池中随机选择一个IP代理来爬取数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import urllibrequest
import random
#构建IP代理池
ip_pool = [
'582215558:808',
'12019824826:8088',
'22122916655:8080',
'13919621467:8080'
]
def ip(ip_pool, url):
#从IP代理池中随机选一个IP代理
ip = randomchoice(ip_pool)
print(ip)
#格式化IP代理格
proxy = urllibrequestProxyHandler({'>
利用C++的Socket可以获得ip和端口号。
网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。Socket的英文原义是“孔”或“插座”。作为BSD UNIX的进程通信机制,取后一种意思。通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,可以用来实现不同虚拟机或不同计算机之间的通信。在Internet上的主机一般运行了多个服务软件,同时提供几种服务。每种服务都打开一个Socket,并绑定到一个端口上,不同的端口对应于不同的服务。Socket正如其英文原意那样,像一个多孔插座。一台主机犹如布满各种插座的房间,每个插座有一个编号,有的插座提供220伏交流电, 有的提供110伏交流电,有的则提供有线电视节目。 客户软件将插头插到不同编号的插座,就可以得到不同的服务。
在socket编程中,服务器端accept()等待一个客户端的连接,当连接成功后,accept拷贝客户端的地址信息到sin_addr里面,我们如何从sin_addr取得此客户端的Ip地址和端口号呢?当sockaddr_insin_family = AF_INET时,sockaddr = sockaddr_in。
据此,我们可以做一下转换,就可以利用 inet_ntoa() 来得到ip地址和端口号了:
int new_fd = accept(sock, &clientAddr, &sin_size);if(new_fd<0)
{
char msg[64];
bzero(msg,sizeof(msg));
sprintf(msg,"accept failed");
log::outputSysErr(msg);
}
else
{
// 将sockaddr强制转换为 sockaddr_in
sockaddr_in sin;
memncpy(&sin, &clientAddr, sizoef(sin));
// 取得ip和端口号
sprintf(infoip, inet_ntoa(sinsin_addr));
infoport = sinsin_port;
infosock = new_fd;
}
可以这样,到网上找个php5isapidll的插件,加载到IIS里,然后,建立一个PHP页面,eg:getRealIpphp
代码如下:
<php
function getip() {
if (getenv(">
以上就是关于c# tcp或者udp 发到本地端口的消息,如何才能知道是ip多少的电脑发来的呢全部的内容,包括:c# tcp或者udp 发到本地端口的消息,如何才能知道是ip多少的电脑发来的呢、怎么使用ip池导用爬小说、c++域名怎么获取ip和端口号源程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)