socket是什么
套接字,可以用作传输之一,有TCP协议和UDP协议,其他自己百度。。。
服务端
服务端一般采用多线程方式
public class SocketThread implements Runnable {
private Socket socket;
public SocketThread(Socket socket) {
this.socket = socket;
}
@Override
public void run() {
try {
/**
* 1、socket的交互都是从输入输出流中获取
* 你获取别人的请求从输入流中获取
* 你需要响应给别人就写到输出流中
*/
//从输入流中拿到请求
InputStream inputStream = socket.getInputStream();
InputStreamReader reader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(reader);
String message = "";
String temp = null;
while ((temp = bufferedReader.readLine()) != null) {
message = message + temp;
}
System.out.println("socket服务端接受到的消息为:" + message);
/**
* 响应消息
*/
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream);
printWriter.println("请求成功");
printWriter.flush();
socket.shutdownOutput();
//以上所有开了的全部都要记得关闭
printWriter.close();
outputStream.close();
bufferedReader.close();
inputStream.close();
reader.close();
socket.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public class NetService {
public static void main(String[] args) {
try {
//需要指定没用使用的端口号
ServerSocket serverSocket = new ServerSocket(12345);
System.out.println("服务端已启动");
//死循环,一直监听
while(true){
//开始监听所有传进来的
Socket socket = serverSocket.accept();
SocketThread socketThread = new SocketThread(socket);
new Thread(socketThread).start();;
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
客户端代码如下
public class SocketClient {
public static void main(String[] args) {
try {
//IP+端口号
Socket socket = new Socket("127.0.0.1",12345);
OutputStream outputStream = socket.getOutputStream();
PrintWriter printWriter = new PrintWriter(outputStream);
printWriter.write("网贷核心请求报文:我是你大爷");
printWriter.flush();
socket.shutdownOutput();
InputStream inputStream = socket.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String message = "";
String rsp = null;
while((rsp = bufferedReader.readLine()) != null){
message = message + rsp;
}
System.out.println("socketService响应报文:"+message);
bufferedReader.close();
inputStreamReader.close();
inputStream.close();
printWriter.close();
outputStream.close();
socket.close();
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这样就完成了简单的socket请求和响应