
在我们用TcpListenerAcceptTcpClient()接收连接之后,我们迫切需要有一个方法可以得到对方的ip和port。这样,我们才可以查看是谁从哪里连到了我们的server上。
切入点在于TcpClient有一个protected的成员Client,这是一个SystemNetSocketsSocket类型的对象。而我们知道SystemNetSocketsSocket对象是可以得到remote ip和port的。
我们想到了用反射(Reflection),于是有了以下代码:
Socket GetSocket(TcpClient cln)
{
PropertyInfo pi = clnGetType()GetProperty("Client", BindingFlagsNonPublic | BindingFlagsInstance);
Socket sock = (Socket)piGetValue(cln, null);
return sock;
}
string GetRemoteIP(TcpClient cln)
{
string ip = GetSocket(cln)RemoteEndPointToString()Split(':')[0];
return ip;
}
public int GetRemotePort(TcpClient cln)
{
string temp = GetSocket(cln)RemoteEndPointToString()Split(':')[1];
int port = ConvertToInt32(temp);
return port;
}
requestgetRemoteAddr(); IP获取
requestgetRemotePort(): 端口号
Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。
Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。
Java分为三个体系:
1Java SE(J2SE,Java2 Platform Standard Edition,标准版),
2JavaEE(J2EE,Java 2 Platform, Enterprise Edition,企业版),
3Java ME(J2ME,Java 2 Platform Micro Edition,微型版)。
利用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;
}
IPAddress remote_ip = ((SystemNetIPEndPoint)workerSocketRemoteEndPoint)Address;//获取远程连接IP
ssm项目一般把8080端口如下:
mybatis-configxml文件的配置
解决后首先导入需要使用到的依赖。导入依赖时若自己的私服里面没有,则建议去阿里云的公服查找自己所需要的版本再将其依赖复制到pomxml文件中。
查看ip地址对应的端口? “IP地址+端口号”来区分不同的服务,,,, 不能登陆到交换机的web页面 如果改变了默认的WEB管理端口,则广域网中只有具有指定IP地址的计算机才能登录路由器执行远端WEB管理。此时必须用“IP地址:端口”的方式,才能登录路由器执行WEB界面管理。 如果将远端WEB管理IP地址设为255255255255,那么,广域网中所有的计算机都可以登录路由器执行远端WEB管理。
<%=
requestgetservername()%>
服务器的域名
<%=
javanetinetaddressgetlocalhost()gethostaddress()
%>
服务器的ip地址
<%=requestgetserverport()%>
服务器正在运行的端口
以上就是关于如何通过TcpClient取得remote ip和port全部的内容,包括:如何通过TcpClient取得remote ip和port、java 怎么获取web容器的ip和端口号、c++域名怎么获取ip和端口号源程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)