【1】网络编程:
把分布在不同地理区域的计算机与专门的外部设备用通信线路互连成一个规模大、功能强的网络系统,从而使众多的计算机可以方便地互相传递信息、共享硬件、软件、数据信息等资源。
设备之间在网络中进行数据的传输,发送/接收数据。
【2】通信两个重要的要素:IP+PORT
【3】设备之间进行传输的时候,必须遵照一定的规则 ---》通信协议:
【4】网络通信原理----套字节
模拟模拟聊天室:
运行结果:
服务器端
客户端
代码实现:
服务器端
package scoketdemo;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Scanner;
/**
* 服务器端
*/
public class SSocket {
public static void main(String[] args) throws IOException {
Scanner input = new Scanner(System.in);
System.out.println("服务器已启动。。。。。");
//通过一个系统类,一直关注一个端口号,判断是否有客户端发送请求
ServerSocket ss = new ServerSocket(6666);
//接收发送过来的请求
Socket socket = ss.accept(); //accept() 可以阻塞线程
//获得输入流
InputStream inputStream = socket.getInputStream();
DataInputStream dis = new DataInputStream(inputStream);
// 获取输出流准备回复
OutputStream outputStream = socket.getOutputStream();
DataOutputStream dos = new DataOutputStream(outputStream);
while (true) {
//读出
String s = dis.readUTF();
System.out.println("客户端发来的信息是:" + s);
// 服务器端回应
System.out.println("输入你要回复的信息:");
String responses = input.next();
dos.writeUTF(responses);
// 如果客户端发送"exit",则关闭服务器
if ("exit".equalsIgnoreCase(s)) {
System.out.println("客户端请求退出,服务器停止。");
break; // 退出服务器端循环,停止服务器
}
}
//关闭资源
dis.close();
dos.close();
socket.close();
}
}
客户端
package scoketdemo;
import java.io.*;
import java.net.Socket;
import java.util.Scanner;
/**
* 客户端:发送一个信息给服务器
*/
public class ASocket {
public static void main(String[] args) throws IOException {
//设置一个socket对象,锁定服务器的ip和端口:
Socket scoket = new Socket("127.0.0.1", 6666);
//获得输出节点流
OutputStream outputStream = scoket.getOutputStream();
DataOutputStream dos = new DataOutputStream(outputStream);
//接收服务器端回复的信息
InputStream inputStream = scoket.getInputStream();
DataInputStream dis = new DataInputStream(inputStream);
//写入数据
Scanner input = new Scanner(System.in);
String A;
while (true) {
System.out.println("请输入你要发送的信息(输入‘exit’退出):");
A = input.next();
if ("exit".equals(A)) {
System.out.println("退出客户端");
break;
}
//发送数据到客户端
dos.writeUTF(A);
//接收服务器发送的数据
System.out.println("服务器回复:" + dis.readUTF());
}
//关闭流资源
dos.close();
scoket.close();
}
}