JAVA的socket客户端和服务器端连接,基础版本
服务器端
利用TCP字节流进行的传输
1. 使用ServerSocket类创建一个实例,并绑定端口
2. 利用Socket类创建一个接收客户端发送数据的实例
3. 利用InputStream类创建一个接收字节流的实例
4. 利用InputStreamReader类创建一个把字节流转换成字符流的实例
5. 利用BufferedReader类创建一个缓冲区的实例
6. 关闭资源
来人,上代码:
package com.imooc;
import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;
/*
基于TCP协议的Socket通信,实现用户登录
服务器端
1.创建ServerSocket类的实例,参数中绑定端口
2.创建Socket类的实例 接受客户端的Socket
3.创建getInputStream 接收客户端的输入字节流
4.创建InputStreamReader 将字节流转换为字符
5.创建BufferedReader 缓冲区
6.最后要把所有资源进行关闭,br,isr,is,socket,serverSocket
*/
public class Server {
public static void main(String[] args) throws IOException {
//1.创建一个服务器端Socket,即ServerSocket,指定绑定的端口,并监听此端口
ServerSocket serverSocket = new ServerSocket(8888);
//2.调用accept()方法开始监听,等待客户端的连接
System.out.println("###服务器即将启动,等待客户端的连接###");
Socket socket = serverSocket.accept();
//3.获取一个输入流,并读取客户端信息
InputStream is = socket.getInputStream();//字节输入流
InputStreamReader isr = new InputStreamReader(is);//将字节流转换为字符流
BufferedReader br = new BufferedReader(isr);//为输入流添加缓冲区
String info = null;
while((info=br.readLine())!=null){
System.out.println("我是服务器,客户端说: "+info);
br.readLine();
}
socket.shutdownInput();//关闭输入流
//4.获取一个输出流,响应客户端的请求
OutputStream os = socket.getOutputStream();
PrintWriter pw = new PrintWriter(os);//包装为打印流
pw.write("你好我是服务器端,你可以叫我小名\"爸爸\"!");
pw.flush();//调用flush()方法将缓冲输出
socket.shutdownOutput();
//5.关闭资源
pw.close();
os.close();
br.close();
isr.close();
is.close();
socket.close();
serverSocket.close();
}
}
客户端
1. 利用Socket创建客户端套接字实例,绑定ip地址和端口
2. 利用OutputStream类创建字节输出流
3. 利用PrintWriter类创建把字节流变成打印流的实例
4. flush()强制刷新缓冲区
5. 关闭资源
代码
package com.imooc;
import java.io.*;
import java.net.Socket;
/*
*/
public class Client {
public static void main(String[] args) throws IOException {
//1.创建客户端Socket,指定服务器地址和端口
Socket client = new Socket("localhost",8888);
//2.获取输出流,向服务器发送信息
OutputStream os = client.getOutputStream(); //字节输出流
PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
pw.write("用户名: admin;密码: 123");
pw.flush();
client.shutdownOutput();//关闭字节输出流
//3.获取输入流,接收服务器发送的信息
InputStream is = client.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String info;
while((info=br.readLine())!=null){
System.out.println("我是客户端: "+info);
}
client.shutdownInput();
//4.关闭资源
br.close();
isr.close();
is.close();
pw.close();
os.close();
client.close();
}
}