------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------
含两方面
1. 客户端
2. 服务端
客户端 :Socket类
此类实现客户端套接字,套接字是两台机器间实现通信的端点。
常用构造方法:
Socket(InetAddress address, int port) |
创建一个流套接字并将其连接到指定主机上的指定端口号。 |
由此构造方法,可以看出
TCP协议是有连接通讯,其在创建时就需要连接到指定IP地址的指定端口号。
常用方法:
getInputStream() : 返回 InputStream对象
getOutputStream : 返回 OutputStream对象
package com.lxh.net;
import java.net.*;
import java.io.*;
public class Client {
public static void main(String[] args) throws Exception {
// 1. 创建客户端套接字服务
Socket cliSocket = new Socket(InetAddress.getLocalHost().getHostAddress(),3000);
// 2. 从客户端套接字对象中获取输出流对象
OutputStream out = cliSocket.getOutputStream();
out.write("the message from client ".getBytes());
cliSocket.close();
}
}
服务端 :ServerSocket
此类实现服务器套接字。服务器套接字等待请求通过网络传入,他基于该请求执行某些操作。
特点:
作为服务端,有很多客户端向其发起访问,所以服务端会在接收该访问的套接字,并在本地创建一个访问套接字的对象,并使用该对象的I/0流。
常用构造方法:
ServerSocket(int port) |
常用方法:
accept():
监听客户端访问到该套接字的连接,此方法在连接之前一直阻塞。
package com.lxh.net;
import java.net.*;
import java.io.*;
public class Server {
public static void main(String[] args) throws Exception {
// 1. 创建服务端套接字,并绑定到特定端口
ServerSocket ss = new ServerSocket(3000);
// 2. 使用accept()方法,接收访问的客户端套接字
Socket s = ss.accept();
// 3. 使用服务端套接字获取客户端套接字的IP地址和相关信息
String cliIP = s.getInetAddress().getHostAddress();
// 4. 使用客户端套接字的输出流接收数据
InputStream in = s.getInputStream();
byte[] buffer = new byte[1024];
in.read(buffer);
System.out.println(cliIP + "Say:" + new String(buffer));
}
}