套接字地址

原创 2015年07月09日 12:25:52

一个客户端要发起一次通信,首先必须知道运行服务器端程序的主机的IP地址或者是主机名,主机名必须被解析成数字型地址才能用来通信。

InetAddress类代表了一个网络地址,包括主机名和数字类型的地址信息。InetAddress实例是不可变的,一旦创建,每个实例就始终指向同一个地址。

该类有两个子类: Inet4Address 和 Inet6Address。

下面我给出一个示例程序,该示例程序利用了NetworkInterface类的基本用法。


package com.niepengfei.test;


import java.net.InetAddress;
import java.net.NetworkInterface;
import java.util.Enumeration;

public class InetAddressExample {
	
	public static void main(String[] args) throws Exception{
		//返回此机器上的所有接口。如果在此机器上找不到任何网络接口,则返回 null,一个主机对应多个网络接口列表,例如有线网接口,无线网接口还有其他类型的接口等
		Enumeration<NetworkInterface> interfaceList = NetworkInterface.getNetworkInterfaces();
		if(interfaceList != null){
			while (interfaceList.hasMoreElements()) {
				//获取每一个网络接口
				NetworkInterface networkInterface = interfaceList.nextElement();
				//打印网络接口的本地名称
				System.out.println("网络接口: "+networkInterface.getName());
				//一个便捷方法,返回一个具有绑定到此网络接口全部或部分 InetAddress 的 Enumeration。 
				//如果存在安全管理器,则对每个 InetAddress 调用其 checkConnect 方法。
				//只有 checkConnect 不抛出 SecurityException 的 InetAddress 才会在 Enumeration 中返回。 
				Enumeration<InetAddress> addrList = networkInterface.getInetAddresses();
				if(!addrList.hasMoreElements()){
					System.out.println("该网络接口没有地址对应。");
				}
				while (addrList.hasMoreElements()) {
					InetAddress inetAddress = addrList.nextElement();
					//返回一个字符串代表主机的数字型地址
					System.out.println("------>" + inetAddress.getHostAddress());
				}
			}
		}
	}

}

测试结果:






版权声明:本文为博主原创文章,未经博主允许不得转载。

套接字和套接字地址结构定义

套接字和套接字地址结构定义这段主程序是一段典型的服务器程序。网络通讯最重要的就是套接字的使用,在程序的一开始就对套接字描述符sockfd和newsockfd进行了定义。接下来定义客户机/服务器的套接字...
  • yirexiao
  • yirexiao
  • 2010年03月01日 10:16
  • 5354

socket 协议簇套接字地址和通用套接字地址

套接字的地址结构看着貌似很复杂,因为经常看到定义一个地址的时候用到struct sockaddr_in,而在bind中的地址参数是struct sockaddr。他们之间的关系是什么呢?...
  • ordeder
  • ordeder
  • 2014年02月16日 13:42
  • 3356

通常每个套接字地址只允许使用一次

原因: 引擎或者登陆器所需要的端口被占。 情况1: 一般为重复开启同个引擎会报此错。 情况2: 不排除为坑爹的软件占用单机引擎端口。 解决方法: 对于情况1,...
  • qi_ruihua
  • qi_ruihua
  • 2017年01月04日 19:33
  • 1407

我的网络编程学习之路——套接字地址结构

1.套接字地址结构 大多数套接字函数都需要一个指向套接字地址结构的指针作为参数。每个协议族都定义它自己的套接字地址结构。这些结构的名字均以sockaddr_开头,并以对应每个协议族的唯一后缀结尾。 1...
  • huangjh2017
  • huangjh2017
  • 2017年06月13日 20:11
  • 190

Apache提示:通常每个套接字地址只允许使用一次

在windows上安装Apache后无法启动,报错如下:通常每个套接字地址(协议/网络地址/端口)只允许使用一次: make_sock:could not bind to address 0.0.0....
  • aidenliu
  • aidenliu
  • 2010年04月11日 19:08
  • 6535

"通常每个套接字地址(协议/网络地址/端口)只允许使用一次"

发现问题:在启动某程序时,提示:”通常每个套接字地址(协议/网络地址/端口)只允许使用一次". 分析:错误指示:通信端口被占用了,导致通信无法进行。 有可能是已经启动了一个程序,还有一种可能是端口...
  • u010321827
  • u010321827
  • 2015年05月12日 09:48
  • 9970

获取本地机器名字与IP地址(使用套接字)

使用套接字获取本地机器的主机名字与IP地址: #include #include #pragma comment(lib, "ws2_32.lib") bool get_inside_ip(st...
  • hellokandy
  • hellokandy
  • 2016年08月12日 13:22
  • 1148

TCP/IP网络编程 学习笔记_3 --给套接字分配IP地址和端口号

IP地址和端口号1,IP地址:为使计算机连接到网络并收发数据,必须为其分配IP地址。IP地址分为两类:IPv4(4字节地址族)和IPv6(16字节地址族)。它们主要区别就是在表示IP地址所用的字节数,...
  • u010223072
  • u010223072
  • 2015年07月09日 17:16
  • 3905

[解决]通常每个套接字地址只允许使用一次

我们在做socket的开发的时候,经常会遇到这个错误:通常每个套接字地址 (协议/网络地址/端口)只允许使用一次 错误指示很明确:通信端口被占用了,导致通信无法进行。 但为什么端口被占用了呢?什么...
  • sq_zhuyi
  • sq_zhuyi
  • 2013年06月09日 11:39
  • 17368

socket:通常每个套接字地址(协议/网络地址/端口)只允许使用一次

今天在自己写的C/S的Server端重启监听时遇到的问题,原因应该是正在Accept状态的listenSocket未能关闭,二次分配相同的端口时引发了异常。网上查看了多人的观点,随手记一下。 大致的处...
  • gtclulong
  • gtclulong
  • 2016年09月07日 10:38
  • 10491
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:套接字地址
举报原因:
原因补充:

(最多只允许输入30个字)