一:网络知识
1:JAVA程序调用计算机命令
try {
//查询当前机器的IP信息
Process pro = Runtime.getRuntime().exec("ipconfig");
InputStream is = pro.getInputStream();
InputStreamReader isr = new InputStreamReader(is,"GBK");
BufferedReader br = new BufferedReader(isr);
String str = null;
while((str = br.readLine())!=null) {
System.out.println(str);
}
br.close();
isr.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
2:网络分类
局域网,城域网,广域网
3:网络分层
一:应用层
支持网络应用,应用协议仅仅是网络应用的一个组成部分,运行在不一样主机上的进程则使用应用层协议进行通讯。主要的协有:http、ftp、telnet、smtp、pop3等。
二:传输层
负责为信源和信宿提供应用程序进程间的数据传输服务,这一层上主要定义了两个传输协议,传输控制协议即TCP和用户数据报协议UDP。
三:网络层
负责将数据报独立地从信源发送到信宿,主要解决路由选择、拥塞控制和网络互联等问题。
四:数据链路层
负责将IP数据报封装成合适在物理网络上传输的帧格式并传输,或将从物理网络接收到的帧解封,取出IP数据报交给网络层。
五:物理层
负责将比特流在结点间传输,即负责物理传输。该层的协议既与链路有关也与传输介质有关。
4:IP地址的分类
A类:1~126
B类:128~191
C类:192~223
D类:224~239(组播通讯)
E类:240~254(科学研究)
5:端口
计算机与外界通讯的入口/出口,值介于0~65535之间(0~2^16)(每一个程序都有一个端口)。java
二:TCP/IP通讯编程
代码实现:
TCP/IP编程实现
客户端:
public class Client {
public static void main(String[] args) throws UnknownHostException, IOException {
Socket socket = new Socket("localhost",8899);
OutputStream os = socket.getOutputStream();
InputStream is = socket.getInputStream();
String mess = "hello";
os.write(mess.getBytes());
socket.shutdownOutput();
int num;
while((num = is.read())!=-1){
System.out.print((char)num);
}
is.close();
os.close();
socket.close();
}
}
服务器端:
public class Server {
public static void main(String[] args) throws IOException {
ServerSocket ss = new ServerSocket(8899);
Socket socket = ss.accept();
InputStream is = socket.getInputStream();
OutputStream os = socket.getOutputStream();
int num;
while((num = is.read())!=-1){
System.out.print((char)num);
}
String mess = "me too";
os.write(mess.getBytes());
socket.shutdownOutput();
os.close();
is.close();
socket.close();
ss.close();
}
}
三:UPD通讯服务器
代码实现:
客户端A:
package com.company.demo.server;网络
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.util.Scanner;socket
public class Test13 {
public static void main(String[] args) {
try {
DatagramSocket service = new DatagramSocket(6666);
InputA i = new InputA(service);
OutputA o = new OutputA(service);
Thread thread1 = new Thread(i);
Thread thread2 = new Thread(o);
thread1.start();
thread2.start();
} catch (Exception e) {
e.printStackTrace();
}
}ide
// 负责输出的内部类
private static class InputA implements Runnable {this
private DatagramSocket service;
private byte[] input;
private DatagramPacket packet;.net
public InputA(DatagramSocket service) {
super();
this.service = service;
this.input = new byte[1024];
this.packet = new DatagramPacket(input, 0, input.length);
}server
@Override
public void run() {
while (true) {
show();
}
}进程
public void show() {
try {
service.receive(packet);
input = packet.getData();
System.out.println(new String(input, 0, input.length));
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 负责输入的内部类
private static class OutputA implements Runnable {
private DatagramSocket service;
private byte[] output;
private DatagramPacket packet;
private InetSocketAddress socket;
private Scanner scan;
public OutputA(DatagramSocket service) {
super();
this.service = service;
this.socket = new InetSocketAddress("localhost", 8888);
this.output = new byte[1024];
}
@Override
public void run() {
while (true) {
show();
}
}
public void show() {
try {
scan = new Scanner(System.in);
String str = scan.next();
output = str.getBytes();
packet = new DatagramPacket(output, output.length, socket);
service.send(packet);
} catch (Exception e) {
}
}
}
}
客户端B:
package com.company.demo.server;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetSocketAddress;
import java.util.Scanner;
public class Test14 {
public static void main(String[] args) {
try {
DatagramSocket service = new DatagramSocket(8888);
InputA i = new InputA(service);
OutputA o = new OutputA(service);
Thread thread1 = new Thread(i);
Thread thread2 = new Thread(o);
thread1.start();
thread2.start();
} catch (Exception e) {
e.printStackTrace();
}
}
// 负责输出的内部类
private static class InputA implements Runnable {
private DatagramSocket service;
private byte[] input;
private DatagramPacket packet;
public InputA(DatagramSocket service) {
super();
this.service = service;
this.input = new byte[1024];
this.packet = new DatagramPacket(input, 0, input.length);
}
@Override
public void run() {
while (true) {
show();
}
}
public void show() {
try {
service.receive(packet);
input = packet.getData();
System.out.println(new String(input, 0, input.length));
} catch (Exception e) {
e.printStackTrace();
}
}
}
// 负责输入的内部类
private static class OutputA implements Runnable {
private DatagramSocket service;
private byte[] output;
private DatagramPacket packet;
private InetSocketAddress socket;
private Scanner scan;
public OutputA(DatagramSocket service) {
super();
this.service = service;
this.socket = new InetSocketAddress("localhost", 6666);
this.output = new byte[1024];
}
@Override
public void run() {
while (true) {
show();
}
}
public void show() {
try {
scan = new Scanner(System.in);
String str = scan.next();
output = str.getBytes();
packet = new DatagramPacket(output, output.length, socket);
service.send(packet);
} catch (Exception e) {
}
}
}
}