java 从零开始,学习笔记之基础入门<网络编程_带QQ模拟功能>(二十)(一)

2014-11-24 08:29:18 · 作者: · 浏览: 2
网络编程
端口: 计算机为特定的程序提供的一个入口,那么我们通过端口就可以连接到对应的程序上去
Ip:是用来标示网络中唯一的主机地址
常见的Tcp端口与对应的服务(协议)
端口
说明
对应服务
7
Echo服务器
21
在网路中共享资源
Ftp
23
连接网络中的主机
telnet
25
发送邮件的协议
SMTP
53
网路中服务器的服务地址
DNS
79
Finger
80
超文本协议
HTTP
110
接收邮件的协议
POP3
端口号可以从0-65535之间取值,一个程序肯能使用其中的某一个端口号,如果一个端口号被一个程序使用了 ,那么另外一个程序就不能使用相同的端口号
计算机使用的端口号一般情况下小于9000 ,那么我们自己写程序指定端口号的时候最好指定9000以上
端口号的分类:
§ 公认端口(Well Known Ports):从0到1023,它们紧密绑定(Binding)一些服务
注册端口(Registered Ports):从1024到49151。它们松散地绑定一些服务
动态和/或私有端口(Dynamic and/or Private Ports):从49152到65535。理论上,不应为服务分配这些端口
Ping:用来测试网络中二台计算机是否连通。
一般情况下是ping+网路中计算机的Ip地址
Ping 192.168.0.38 -t
通过java.net.InetAddress这个类可以得到主机的信息
package com.ibm.inetaddress;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringBufferInputStream;
import java.net.InetAddress;
import java.net.UnknownHostException;
public class IDDemo {
//得到主机的信息
public static void main(String[] args)throws IOException {
//创建InetAddress类的对象
//此类没有构造器,没有子类调用方法返回一个类的对象
InetAddress ia = InetAddress.getLocalHost();
//返回主机的ip地址
String ip = ia.getHostAddress();
System.out.println(ip);
//返回主机的计算机名
String name = ia.getHostName();
System.out.println(name);
//获取计算机的完整名称
String yum = ia.getCanonicalHostName();
System.out.println(yum);
//根据计算机名来获取ip地址
InetAddress ia2=InetAddress.getByName("ERIC-PC");
System.out.println(ia2.getHostAddress());
//将大于-128到127
//将ip地址中大于127的数转换成二进制 0101
//然后将转换之后的二进制数求补码
//再将转换之后的补码转换成十进制 78
//byte[] ip2={192,168,0,38};
// InetAddress ia3=InetAddress.getByAddress(b);
// System.out.println(ia3.getHostName());
}
}
Socket(套接字):
表示一个系统的ip地址与端口号的结合。
可以通过流在同一个网络中的二台计算机之间相互传递信息
创建TCP Socket需要本地计算机ip地址 和端口号 和需要访问的计算机的ip地址和提供的访问的端口号
package com.ibm.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.ServerSocket;
import java.net.Socket;
public class Socket_1 {
public static void main(String[] args) {
try {
ServerSocket server =new ServerSocket(9009);
Socket sk = server.accept();
BufferedReader br = new BufferedReader(new InputStreamReader(sk.getInputStream()));
String line =null;
while((line = br.readLine())!=null){
if("quit".equalsIgnoreCase(line)){
break;
}
System.out.println("ok");
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Java.net.ServerSocket 和出自于java.net.Socket这二个类用于创建双向通信,可以从客户端给服务端发送数据,也可以从服务端给连接到此服务端的客户端发送信息。
package com.ibm.socket;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.io.Reader;
import java.net.ServerSocket;
import java.net.Socket;
publ