通信
一、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();