java提供四种类型的网络通信:
1、InelAddress:用于标识网络上的硬件资源,表示互联网协议地址(IP);
2、URL:统一资源定位符 通过URL可以直接读取或写入网络上的数据;
3、Sockets:使用TCP协议实现网络通信的Socket相关的类(客户端的Socket类;服务器端的ServerSocket类),
TCP协议是面向连接、可靠的、有序的,以字节流的方式发送数据基于TCP协议实现网络通信;
4、Datagram:使用UDP协议,将数据保存在数据报中,通过网络进行通信;
在Socket编程模式中,Socket类用来创建客户端程序,ServerSocket类用来创建服务端程序。
一般步骤:
1、创建服务端程序,通过ServerSocket类创建服务端程序,一般指定一个监听端口,用来等待客户端的连接;
2、创建客户端程序,通过Socket类创建客户端程序,需要指定服务器地址与端口号;
一旦连接建立ServerSocket就可以获得一个Socket实例,通过Socket打开输入、输出流,进行通信。
客户端代码:
try {
//实例化socket 访问服务器的ip加端口
Socket socket = new Socket("192.168.1.101",8888);
//获取输入流
InputStream in = socket.getInputStream();
// 缓冲区
byte[] buffer = new byte[in.available()];
//读到缓冲区
in.read(buffer);
String msg = new String(buffer);
System.out.println(msg);
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
服务端代码:
try {
//实例化服务器套接字
ServerSocket server = new ServerSocket(8888);
while(true){
//获得客户端套接字
Socket client = server.accept();
//获得输出流
OutputStream out = client.getOutputStream();
//输出字符串
String msg = "Hello world!";
//写字符串
out.write(msg.getBytes());
//关闭输出流
client.close();
}
} catch (IOException e) {
e.printStackTrace();
}