`

java 网络协议(一)InetAddress和Socket(含源码)

阅读更多
1,ip地址和主机名互换
package getip;

import java.net.InetAddress;
import java.net.UnknownHostException;

public class GetIP {

	public static void main(String[] args) {
		InetAddress addr= null;
		
		if(args.length==0){
			System.out.println("usage:java GetIP hostname");
			System.exit(1);
		}
		try {
			addr = InetAddress.getByName(args[0]);
			
		} catch (UnknownHostException e) {
			System.out.println("I can't find"+args[0]);
			System.exit(2);
		}
//		byte[] add = addr.getAddress(); //返回字节数组
//		for(byte i:add){
//			System.out.println(i);
//		}
		
		//		getHostName()返回主机名,getHostAddress()返回地址
		System.out.println(addr.getHostName()+"="+addr.getHostAddress());
		try {
			InetAddress[] allAddrs = InetAddress.getAllByName(args[0]);//一台主机可能对应多个ip
		for(InetAddress a:allAddrs){
	    	  System.out.println(a); //InetAddress.toString的隐含调用,自动输出 "主机名/ip地址"
	      }
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} 
	}
}


如果执行参数主机名为www.sina.com,结果如下
www.sina.com=121.194.0.206
www.sina.com/121.194.0.206
www.sina.com/121.194.0.207
www.sina.com/121.194.0.208
www.sina.com/121.194.0.209
www.sina.com/121.194.0.210
www.sina.com/121.194.0.203
www.sina.com/121.194.0.205

2,测试连接某个服务,如web服务器
package testConn;

import java.io.IOException;
import java.net.InetAddress;
import java.net.Socket;
import java.net.UnknownHostException;
//测试连接web服务器
public class WebPing {
	public static void main(String[] args) {

		try {
			InetAddress addr= null;
			Socket socket = new Socket(args[0],80);//80端口是web服务
			addr=socket.getInetAddress();
			System.out.println("connected to "+addr);
			socket.close();
		} catch (UnknownHostException e) {
			e.printStackTrace();
		} catch (IOException e) {
			System.out.println("can't connect to "+args[0]);
		}
	}

}

参数为www.sina.com结果
connected to www.sina.com/121.194.0.206
如果端口被占用出现,如参数为localhost时
can't connect to localhost

3,扫描出计算机正在使用的端口号
package usedport;

import java.io.IOException;
import java.net.ServerSocket;

//扫描出计算机中正在使用的端口,使用ServerSocket构造函数是否有异常判断
public class LocalScan {

	public static void main(String[] args) {
		for (int i = 0; i < 1023; i++) {
			testPort(i);
		}
		System.out.println("completed! ");
	}
	private static void testPort(int i) {
		try {
			ServerSocket server = new ServerSocket(i);
		} catch (IOException e) {
			System.out.println("Port " + i + " in use!");
		}
	}
}


结果:
Port 135 in use!
Port 445 in use!
。。。
。。。
completed!
分享到:
评论

相关推荐

    java socket 源码

    Java Socket 类位于 `java.net` 包下,它是 Java 网络编程的核心类之一。Socket 实例代表了一个网络连接的两端,一个端点是服务器,另一个是客户端。Socket 类继承自 `java.lang.Object`,并实现了 `java.io....

    InetAddress源码

    在Java编程语言中,`InetAddress`类是网络程序设计中的核心组件,它主要用于表示互联网协议(IP)地址。这个类及其相关方法提供了获取和解析主机名与IP地址的能力,无论是本地主机还是远程主机。在分布式系统中,`...

    Java2网络协议技术内幕(源码).rar

    《Java2网络协议技术内幕(源码)》是一份深入探讨Java网络编程的资源集合,包含源代码,有助于开发者理解并实践Java中的网络通信技术。这份资料主要涵盖了以下几个关键知识点: 1. **Java网络编程基础**:Java通过...

    socket 文件传输源码

    Socket编程是Java网络编程中的重要组成部分,主要用于实现客户端与服务器之间的通信。在这个“Socket文件传输源码”中,我们很显然会看到如何使用Java的Socket类来实现在两个应用程序之间传输文件。以下是对这个主题...

    基于java实现Socket套接字一对一聊天系统源码+项目说明.zip

    Socket,又称套接字,在TCP/IP协议分层架构中,属应用层和传输层之间的一个抽象层(也有的说是属于传输层),它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用以实现进程在网络中通信。 ![在这里插入图片描述...

    Java网络编程实例(随书源代码)

    - **套接字(Sockets)**:Java中的Socket类和ServerSocket类是网络通信的基础,它们分别代表客户端和服务器端的连接。 - **URL(统一资源定位符)**:用于唯一标识网络上的资源,Java提供了URL类来处理和解析URL...

    java网络编程第4版源码java network programming 4th edition source code

    《Java网络编程第四版》是Java开发者深入理解网络编程的重要参考书籍,其源码提供了丰富的实践示例,有助于读者深入学习和理解网络通信的核心概念。本资料包含的源码是作者精心设计和编写的,旨在帮助读者更好地掌握...

    项目源码-java网络五子棋游戏

    【项目源码】-java网络五子棋游戏 package com.lzw.gobang; import java.awt.AlphaComposite; import java.awt.Composite; import java.awt.Graphics; import java.awt.Graphics2D; import java.awt....

    Android Socket编程源码(与PC通讯).zip

    在Android开发中,Socket编程是实现设备间网络通信的关键技术之一。这个压缩包"Android Socket编程源码(与PC通讯).zip"包含了用于演示如何让Android设备与个人计算机(PC)通过网络进行数据交换的源代码。让我们...

    基于Java的实例开发源码-Telnet客户端实例源码.zip

    Java是一种广泛使用的编程语言,尤其在企业级应用和网络服务中占据重要地位。在这个"基于Java的实例开发源码-Telnet客户端实例源码.zip"压缩包中,包含了一个使用Java实现的Telnet客户端的源代码。让我们深入探讨...

    Android Socket调试助手教程及源码

    Android Socket调试助手是一个实用工具,用于帮助开发者在Android平台上进行网络通信的调试工作,特别是涉及TCP/IP协议的Socket编程。它通过创建和管理Socket连接,允许开发者查看和控制数据的发送与接收,从而更好...

    Java Socket Udp网络读卡器服务器端源码.rar

    Java Socket UDP网络读卡器服务器端源码是一个用于实现UDP通信的Java程序,它主要用于处理来自网络读卡器的数据,并能向读卡器发送各种控制指令。UDP(User Datagram Protocol)是一种无连接的、不可靠的传输协议,...

    java网络编程实例源代码

    Java网络编程是开发分布式应用程序的关键技术,它涵盖了各种通信协议,如TCP/IP和UDP,以及Socket编程等核心概念。在本实例源代码中,你将深入理解如何利用Java实现网络通信,下面我们将详细探讨相关知识点。 一、...

    Java网络编程期末考试复习题库+答案

    Java网络编程是计算机科学中的一个重要领域,特别是在软件开发中,它涉及到如何通过网络进行数据传输和通信。在Java中,网络编程主要依赖于Java的Socket编程、ServerSocket、URL类以及NIO(非阻塞I/O)等核心API。这...

    java源码:局域网广播系统java源码.rar

    5. **网络寻址**:Java的InetAddress类用于处理IP地址和主机名,可以用于获取局域网内所有设备的IP地址,从而实现广播。 6. **事件驱动编程**:为了实时响应客户端的连接和断开,系统可能会使用Java的I/O多路复用...

    android socket通信实例程序

    本实例程序主要涉及到的是Android应用如何利用Socket进行TCP(Transmission Control Protocol)通信,TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议。 在Android中使用Socket,首先需要导入相关的Java...

    基于Java的实例源码-局域网广播系统Java源码.zip

    这个局域网广播系统Java源码是一个很好的学习资源,涵盖了Java网络编程的许多核心概念,对于理解网络通信和多线程编程有极大的帮助。通过分析和理解源码,开发者可以提升自己的Java编程能力,并能应用到实际项目中去...

    基于Java的局域网广播系统Java源码.zip

    在Java中,实现局域网广播通常会涉及到Socket编程,多线程,以及可能的网络套接字(InetAddress)和网络接口(NetworkInterface)的使用。 在压缩包内的“局域网广播系统java源码”文件,很可能是包含整个项目的...

    基于Java的实例源码-Tsinghua IP 清华大学学生写的一个有关IP的程序.zip

    总之,这个“基于Java的实例源码-Tsinghua IP”项目展示了Java在网络编程中的应用,涵盖了网络协议的理解、IP地址处理、软件开发实践等多个方面的知识点,对于学习和理解这些主题具有很高的参考价值。通过深入研究和...

Global site tag (gtag.js) - Google Analytics