通信
一、Socket类
这个类实现客户端套接字。套接字是两台机器之间通讯的端点。
1.1 socket 的常用构造方法
socket() | 创建一个未连接的套接字,并使用系统默认类型的socketImpl |
socket(InetAddress address,int port) | 创建流套接字并将其连接到指定ip地址的指定端口号 |
1.2 socket 的常用方法
void | bind(SocketAddress bingpoint) | 将套接字绑定到本地地址 |
void | close() | 关闭此套接字 |
void | connect(SocketAddress endpoint) | 将此套接字连接到服务器 |
socketChannel | getChannel() | 返回与此套接字相关联的唯一的SocketChannel对象(如果有) |
inetAddress | getInetAddress() | 返回套接字所连接的地址 |
InputStream | getInputStream() | 返回此套接字的输入流 |
OutputStream | getOutputStream() | 返回此套接字的输出流 |
二、ServerSocket类
这个类实现了服务器套接字。服务器套接字等待通过网络进入的请求。它根据该请求执行一些操作,然后将结果返回给请求者。
2.1 ServerSocket的常用构造方法
ServerSocket() | 创建未绑定的服务器套接字 |
ServerSocket(int port) | 创建绑定到指定端口的服务器套接字 |
ServerSocket(int port,int backlog) | 创建服务器套接字并将其绑定到指定的本地端口号,并指定了积压 |
ServerSocket(int port,int backlog,inetAddress bindAddr) | 创建一个具有指定端口的服务器,侦听backlog和本地IP地址绑定。 |
2.2 ServerSocket的常用方法
socket | accept() | 侦听要连接到此套接字并接受它 |
void | bing(SocketAddress endpoint) | ServerSocket绑定到特定地址(IP地址和端口号) |
void | colse() | 关闭此套接字 |
ServerSocketChannel | getChannel() | 返回与此套接字相关联的唯一的ServerSocketChannel对象(如果有) |
InetAddress | getInetAddress() | 返回此服务器套接字的本地地址 |
int | getLocalPort() | 返回此套接字正在侦听的端口号 |
SocketAddress | getLocalSocketAddress() | 返回此套接字绑定到的端点的地址 |
String | tpString() | 将该套接字的实现地址和实现端口返回为String |
三、实现单项通信
3.1 客户端
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
//以上都是导入的包(import)
public class Test{
public static void main(String[] args){
try{
//创建socket,指定ip和port(端口)
Socket socket = new Socket(“127.0.0.1”,5000);
/**
*获得控制台输入的内容
*BufferedReader 从字符输入流读取文本,缓冲字符
*/
BufferedReader bu = new BufferedReader(new InputStream(System.in));
//输入流与输出流
PrintWriter pw = new PrintWriter(socket.getOutputStream());
BufferedReader bu2 = new BufferedReader(new InputStream(socket.getInputStream()));
String readline = bu2.readLine();
//反复向服务器写入数据
while(!readline.equals(“exit”)){
pw.println(readline);
pw.flush();