摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢!

旅途中书的陪伴,3.5元钢笔的记忆,伴随我Java的学习。-泥沙砖瓦浆木匠

一.服务器初试-telnet工具

当我们编写网络程序时,我们应该认识telnet的小工具(unix 和 win 自带)。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的能力。win自带的telnet要去开启,开启的步骤如下:
                                 

注意:第一:打开控制面板,打开程序和功能,看到左边有个“打开或关闭Windows功能 ,打开找到telnet客户端,telnet服务器。把这2项都勾选上,然后确定就可以了第二:作为开发人员,最好关闭防火墙。以免被这个自己的防火墙阻止了一些访问权限。

二.telnet工具的使用

下面我们就用telnet访问服务器,校对下时间。打开cmd界面,请输入:

telnet time-A.timefreq.bldrdoc.gov 13

应该有些延迟,你会看到黑幕中弹出 来自USA的X原子的计量时间:

56853 14-07-15 07:50:43 50 0 0 645.5 UTC(NIST) *

其实,time-A.13timefreq.bldrdoc.gov 是域名,13是端口(port)。返回过来当前日期时间的是端口(13)。远程服务器一直在等待与端口13的网络连接,当其接收到请求,就反馈给客户端。

以下,是我提供的telnet的工具常用命令。

三.Socket实现访问服务器

import java.io.IOException;
import java.io.InputStream;
import java.net.Socket;
import java.util.Scanner; public class SocketTest
{
public static void main(String[] args)
{
try
{
Socket s = new Socket("time-A.timefreq.bldrdoc.gov",13);
try
{
InputStream inStream = s.getInputStream();
@SuppressWarnings("resource")
Scanner scanner = new Scanner(inStream); while (scanner.hasNextLine())
{
String line = scanner.nextLine();
System.out.println(line);
}
}
finally
{
s.close();
}
} catch (IOException e)
{
e.printStackTrace();
}
}
}

在上面,我们用Socket来访问time-A.timefreq.bldrdoc.gov,获取时间。其中的关键代码:
InputStream inStream = s.getInputStream();

Scanner scanner = new Scanner(inStream);

第一行代码用来打开套接字没用于是该程序和外部间的通信。一旦套接字打开,Socket类和getInputStream方法返回一个流对象。然后构造个扫描器进行标准输出。不要看Socket 简单易用,java封装了大量的代码,比如网络连接,数据发送直接的复杂过程…

注意:我们这边讨论都都是关于TCP网络协议,大家都知道UDP比TCP开销要少很多。但是UDP适用于音频流和视频流等传输,他无序传递容易在传输中丢失。

相关资料:

java.net.Socket

Socket(InetAddress address, int port)

创建一个流套接字并将其连接到指定 IP 地址的指定端口号。

getInputStream()

返回此套接字的输入流.

java.util.Scanner

Scanner(InputStream source)

构造一个新的 Scanner,它生成的值是从指定的输入流扫描的。

四.套接字超时

从套接字读取信息,有可能读操作会被阻塞。良好的处理方式:确定合理的超时值。用setSoTimeout方法设置这个超时(单位:毫秒).

Socket s = new Socket();
s.connect(new InetSocketAddress("time-A.timefreq.bldrdoc.gov", 13), 5000);

java.net.Socket

connect(SocketAddress endpoint, int timeout)
          将此套接字连接到服务器,并指定一个超时值。

五.因特网地址

因特网地址通常是一串数字表示主机地址。由4个字节构成,IPv6规定16个字节,比如:132.163.1.127.如果主机系统支持IPv6格式,则java.net包也支持它。InetAddress对象的静态方法getByName可以返回其对象。

InetAddress address = InetAddress.getByName(www.baidu.com);

下面演示一个demo,用来获取本机 或者 输入的主机名:

package sedion.jeffli.net;

import java.net.InetAddress;
import java.net.UnknownHostException; public class InetAddressTest
{
public static void main(String[] args) throws UnknownHostException
{
try
{
if (args.length > 0)
{
String host = args[0];
InetAddress[] address = InetAddress.getAllByName(host);
for (InetAddress inetAddress : address)
{
System.out.println(inetAddress);
}
}
else
{
InetAddress localHostAddress = InetAddress.getLocalHost();
System.out.println(localHostAddress);
}
} catch (Exception e)
{
e.printStackTrace();
}
}
}

java.net.InetAddress

static InetAddress getAllByName(String host)
          在给定主机名的情况下,根据系统上配置的名称服务返回其 IP 地址所组成的数组。

static InetAddress getByName(String host)
          在给定主机名的情况下确定主机的 IP 地址。

static InetAddress getLocalHost()
          返回本地主机。

String getHostAddress()
          返回 IP 地址字符串(以文本表现形式)。

String getHostAddress()
          返回 IP 地址字符串(以文本表现形式)。

六.感谢知识来源和小结

一.服务器初试-telnet工具

二.telnet工具的使用

三.Socket实现访问服务器

四.套接字超时

五.因特网地址

来自:java基础书籍。

为傻干杯。告诉自己:如果你想实现某个事情,不要想太多

动车上的书摘-java网络 连接服务器的更多相关文章

  1. 动车上的书摘-java对象流与序列化

    摘要: 摘要: 原创出处: http://www.cnblogs.com/Alandre/ 泥沙砖瓦浆木匠 希望转载,保留摘要,谢谢! 钢笔不限贵便宜,书法是来自心对手的交流.-泥沙砖瓦浆木匠 一.对 ...

  2. Java网络连接之HttpURLConnection、HttpsURLConnection

    工具类包含两个方法: http请求.https请求 直接看代码: package com.jtools; import java.io.BufferedReader; import java.io.I ...

  3. JAVA Socket连接服务器时可能抛出的异常

    1.UnknownHostException:host(非ip)无法识,就会报该异常,www.google.com.hk这个虽然也ping不通,但是不会报该错,因为他是一个确实存在的域名.他会报Con ...

  4. Java网络连接之HttpURLConnection 与 HttpClient

    HttpClient使用详解:http://blog.csdn.net/wangpeng047/article/details/19624529   注:HttpURLConnection输出流用ou ...

  5. Java网络编程之Netty服务端ChannelOption.SO_BACKLOG配置

    ChannelOption.SO_BACKLOG对应的是tcp/ip协议listen函数中的backlog参数,函数listen(int socketfd,int backlog)用来初始化服务端可连 ...

  6. JAVA网络编程Socket常见问题 【长连接专题】

    一. 网络程序运行过程中的常见异常及处理 第1个异常是 java.net.BindException:Address already in use: JVM_Bind. 该异常发生在服务器端进行new ...

  7. [转]Linux服务器上11种网络连接状态 和 TCP三次握手/四次挥手详解

    一.Linux服务器上11种网络连接状态: 图:TCP的状态机 通常情况下:一个正常的TCP连接,都会有三个阶段:1.TCP三次握手;2.数据传送;3.TCP四次挥手. 注:以下说明最好能结合”图:T ...

  8. Java网络编程客户端和服务器通信

    在java网络编程中,客户端和服务器的通信例子: 先来服务器监听的代码 package com.server; import java.io.IOException; import java.io.O ...

  9. 优动漫PAINT(clip studio paint)提示无法连接服务器

    很多同学在使用优动漫PAINT进行艺术创作的时候,软件会出现无法连接服务器的提示,遇到此情况如何解决呢?目前,软件在Windows系统和Mac系统上的解决方法有别,请悉知: 1.曾使用过,或正在使用F ...

随机推荐

  1. XMLHttpRequest状态码及相关事件

    1.创建一个XMLHttpRequest对象 2.对XMLHttpRequest对象进行事件的监听(定义监听事件的位置不影响 3.对XMLHttpRequest对象的状态码 状态   名称 描述 0 ...

  2. nginx上传文件时 nginx 413 Request Entity Too Large 错误

    产生原因: 上传文件的大小超出了 Nginx 允许的最大值,默认是1M: 解决方法: 修改Nginx的配置文件(一般是:nginx/nginx.conf),在 http{} 段中增大nginx上传文件 ...

  3. Python的条件判断语句------if/else语句

    计算机之所以能做很多自动化的任务,因为它可以自己做条件判断. 比如,输入用户的年龄,根据年龄打印不同的内容... Python程序中,能让计算机自己作出判断的语句就是if语句: 例: age = 25 ...

  4. Day03(黑客成长日记)------>元祖及列表的增减改查

    #昨日作业解析: # s = 'sadagwa'# i = 0# while i < len(s):# s1 = s[i]# print(s1)# i += 1# while使用技巧,先找递增变 ...

  5. window.open()新开网页被拦截

    问题:同一个项目,同一个浏览器,不同模块,相同的代码(同是window.open()),为何一个直接打开,另一个直接被拦截? 原因:查资料发现为浏览器的广告拦截功能导致. 补充: 1.一般情况下,js ...

  6. Appium之Android功能脚本

    Android功能脚本 注:这里只写了登录和退出功能,以下不提供app的包名,下面我使用的是线上包 准备:1.Eclipse的Java环境:2.Appium环境:3.Android真机一台. 创建一个 ...

  7. Borg, Omega, and Kubernetes读后笔记

    前言 最近又读了一遍 Borg, Omega, and Kubernetes 这篇文章,觉得这个文章写得很好,让我对架构设计有了进一步的认识,所以想写一篇读后笔记. 原文地址,还有篇中文翻译的,这个中 ...

  8. Activiti工作流数据库表详细介绍

    Activiti的后台是有数据库的支持,所有的表都以ACT_开头. 第二部分是表示表的用途的两个字母标识. 用途也和服务的API对应. ACT_RE_*: 'RE'表示repository. 这个前缀 ...

  9. (一)Javascript 面向对象编程:封装

    Javascript 面向对象编程:封装 作者:阮一峰 Javascript是一种基于对象(object-based)的语言,你遇到的所有东西几乎都是对象.但是,它又不是一种真正的面向对象编程(OOP ...

  10. 天气预报demo (ShareREC 官网 MobAPI)

    第一步 自己注册一个应用,然后获取里面的 App Key,下载MobAPI SDK 然后拖入 MobAPI.framework 和 MOBFoundation.framework 到你的项目中 官网是 ...